沐浴C语言第四天

常见排序算法

此处假设需要排序的为一个int型数组,定义如下:

 int num[] = {3,0,1,8,7,2,5,4,6,9};
  1. 冒泡排序
    介绍链接
//冒泡排序 通过一次排序 最大的沉底
    for (int i = 0; i < 10; i++){//比较的次数
        for (int j = 0; j < 10-i-1; j++){
            if (num[j] > num[j+1]) {
                //交换j和j+1的值
                int temp = num[j+1];
                num[j+1] = num[j];
                num[j] = temp;
            }
        }
    }
  1. 选择排序
    介绍链接
//选择排序 一次取出一个值 默认他是最小的
    //如果发现比这个数小 就交换
    //遍历整个数组 找到一个最小的
    //3,0,1,2,5,4,6
     for (int i = 0; i < 10-1; i++){
        //默认这是最小的
        //int min = num[i];//3
        for (int j = i+1; j < 10; j++){
            //控制用min和后面的每一个进行比较
            if (num[i] > num[j]){
                //j对应的数字比min还小 交换
                int temp = num[i];
                num[i] = num[j];
                num[j] = temp;
            }
        }
        //一次遍历之后找到最小的值min
        //num[i] = min;
    }
  1. 插入排序
    介绍链接
for (int i = 0; i < 10; i++) {
        //让i和i+1比较大小
        if (num[i] > num[i+1]) {
            //交换值
            int temp = num[i];
            num[i] = num[i+1];
            num[i+1] = temp;
            
            //让num[i]和前面的所有进行比较
            for (int j = i; j > 0; j--){
                if (num[j] < num[j-1]) {
                    temp = num[j];
                    num[j] = num[j-1];
                    num[j-1] = temp;
                }
            }
        }
    }

打印及输出:

 for (int i = 0; i < 10; i++) {
        printf("%d ", num[i]);
    }
    printf("\n");
image.png

结语

迷茫不可怕,说明你还在向前走。失败不可怕,只要你还能爬起来。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容