首页 > 其他分享 >C语言习题:数组与选择排序、冒泡排序

C语言习题:数组与选择排序、冒泡排序

时间:2022-10-15 17:27:10浏览次数:57  
标签:int ip 冒泡排序 C语言 ++ num printf 习题 排序

题目

1.选择法排序。输入一个正整数n(1<n≤10),再输入n个整数,将它们从大到小排序后输出。试编写相应程序。
2.冒泡法排序。输入一个正整数n(1<n≤10),再输入n个整数,将它们从小到大排序后输出。试编写相应程序。

分析

选择排序

选择排序法的步骤如下:

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。

冒泡排序

冒泡排序法的步骤如下:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

了解了原理,那么就好办了:

示例代码

选择排序,从大到小

#include <stdio.h>

void num_sort(int *ip, int n);
int main(void)
{
    int n;
    printf("Please enter an integer N (1-10):");
    scanf("%d", &n);
    if (n < 1 || n > 10) {
        printf("ERROR!\n");
        return -1;
    }
    //定义并初始化数组及其指针
    int num[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    int *ip = num;
    //输入数据进入数组
    for (int i = 0; i < n; i++) {
        printf("Please enter the %dth number(0-9999):", i + 1);
        scanf("%d", &num[i]);
        if (num[i] < 0 || num[i] > 9999) {
            printf("ERROR!\n");
            return -1;
        }
    }
    //排序
    num_sort(ip, n);
    //输出结果
    printf("\n\n============================================\n");
    printf("The sorting result is:");
    for (int i = 0; i < n; i++) {
        printf("%d ", num[i]);
    }
    printf("\n");
    getchar();
    return 0;
}

//选择排序:从大到小
void num_sort(int *ip, int n)
{
    int temp;
    for (int i = 0, max = 0; i < n; i++, max = 0) {
        //取数组中的最大数
        for (int j = i; j < n; j++) {
            if (max < ip[j]) {
                max = ip[j];
            }
        }
        //找到最大数,并将其提前
        for (int j = i; j < n; j++) {
            if (max == ip[j]) {
                temp = ip[i];
                ip[i] = ip[j];
                ip[j] = temp;
            }
        }
    }
}

冒泡排序,从小到大

#include <stdio.h>

void num_sort(int *ip, int n);
int main(void)
{
    int n;
    printf("Please enter an integer N (1-10):");
    scanf("%d", &n);
    if (n < 1 || n > 10) {
        printf("ERROR!\n");
        return -1;
    }
    //定义并初始化数组及其指针
    int num[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    int *ip = num;
    //输入数据进入数组
    for (int i = 0; i < n; i++) {
        printf("Please enter the %dth number(0-9999):", i + 1);
        scanf("%d", &num[i]);
        if (num[i] < 0 || num[i] > 9999) {
            printf("ERROR!\n");
            return -1;
        }
    }
    //排序
    num_sort(ip, n);
    //输出结果
    printf("\n\n============================================\n");
    printf("The sorting result is:");
    for (int i = 0; i < n; i++) {
        printf("%d ", num[i]);
    }
    printf("\n");
    getchar();
    return 0;
}

//冒泡排序:从小到大
void num_sort(int *ip, int n)
{
    int temp;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            //交换相邻的两个数
            if (ip[j] > ip[j + 1]) {
                temp = ip[j];
                ip[j] = ip[j + 1];
                ip[j + 1] = temp;
            }
        }
    }
}

以上两个程序的区别仅在函数num_sort()

标签:int,ip,冒泡排序,C语言,++,num,printf,习题,排序
From: https://www.cnblogs.com/CoronaZero/p/16794562.html

相关文章

  • C语言中的重载
    除了类属关系运算符"."、成员指针运算符".*"、作用域运算符"::"、sizeof运算符和三目运算符"?:"以外C++中的所有运算符都可以重载但是=、()、[]、->这四个不能重载为类的......
  • 二叉树(存储结构,三种遍历方式,构建树)——C语言描述
    二叉树(存储结构,三种遍历方式,构建树)——C语言描述目录二叉树(存储结构,三种遍历方式,构建树)——C语言描述0测试用例框架1定义2特殊二叉树3二叉树的性质4二叉树存储结构5......
  • 数据结构—第一章绪论习题
    1、简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。解答:    数据:是客观事物的符号表示,指所有能输入到计算机中并被......
  • 练习题06List
    分析以下需求,并用代码实现:(1)有如下代码:(2)定义方法统计集合中指定元素出现的次数,如"a"3,"b"2,"c"1List<String>list=newArrayList<>();list.add("a");list.......
  • C语言文件基本操作
    什么是文件与普通文件载体不同,文件是以硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。文件通常具有点+三个字母的文件扩展名,用于指示文件类型(......
  • 【C语言】函数调用操作符、结构成员访问操作符、隐私类型转换、操作数优先级大小。
    ......
  • 数分习题课整理
    第五周T1设\(\{x_n\}_{n=1}^\infty\)为有界实数列,\(a=\liminf\limits_{n\to\infty}x_n,b=\limsup\limits_{n\to\infty}x_n\),满足\(a<b\)且\(\limsu......
  • C语言实现stat
    mystat用c语言实现statstat命令的作用stat命令显示文件或目录的详细属性信息包括文件系统状态,比ls命令输出的信息更详细首先学习一下statmanstatman-kstat|g......
  • 用C语言实现猜数字游戏
    #每日美图分享#今天我们来用C语言代码来制作一个猜数字的游戏。基本思路:1.开始时,执行菜单来选择是否进行游戏。2.选择进行游戏后我们需要电脑生成一个的随机数。3.搞定随机......
  • C语言小白刷题
     1.有n个评委,他们给出score个分数,请用代码写出平均值,ave代表平均值intmain(){intn,i=1,score,sum=0,ave;printf("请输入评委人数:");scanf("%......