美文网首页
C语言_3种基本排序方法

C语言_3种基本排序方法

作者: 书虫大王X | 来源:发表于2019-08-02 22:12 被阅读0次

1.冒泡排序:

原理:比较相邻元素的大小,对于每次循环,按排序的规则把最值移向数组的一端,同时循环次数依次减少,例:

//定义一个0-9的乱序数组
int num[] = {3,0,1,8,7,2,5,4,6,9};
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;
            }
        }
    }
//输出数组
 for (int i = 0; i < 10; i++) {
        printf("%d ", num[i]);
    }
    printf("\n");
    return 0;
}
//输出结果:0 1 2 3 4 5 6 7 8 9

2.选择排序:

原理:先在未排序的数组中找出最值,通过交换将其放在数组第一位,然后再从剩余的未排序数组中找到另一个最值,将其放在已排序数组的末尾(第二次找到该最值后将其放在数组第二位)。以此类推,直到整个数组排完序。

//定义一个0-9的乱序数组
int num[] = {3,0,1,8,7,2,5,4,6,9};
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;
    }
//输出数组
 for (int i = 0; i < 10; i++) {
        printf("%d ", num[i]);
    }
    printf("\n");
    return 0;
}
//输出结果:0 1 2 3 4 5 6 7 8 9

3.插入排序:

原理:将数据分为有序数列和无序数列两部分,一开始有序数列只有数列的第一个元素。对于无序数列的每个元素,要插入到有序数列中,方法是与有序数列中的末尾元素开始作比较,若前者大于后者则前者位置不变;否则,检索这个待插入元素小于第n个元素且大于或等于第n-1个元素的位置,同时将这个位置后面的元素往后移动(检索一次,移动一次),然后将其插入到这个位置。以此类推,直到无序数列元素个数为0。

//定义一个0-9的乱序数组
int num[] = {3,0,1,8,7,2,5,4,6,9};
  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");
    return 0;
}
//输出结果:0 1 2 3 4 5 6 7 8 9

相关文章

  • C语言_3种基本排序方法

    1.冒泡排序: 原理:比较相邻元素的大小,对于每次循环,按排序的规则把最值移向数组的一端,同时循环次数依次减少,例...

  • C语言中排序方法的使用

    C语言中排序方法 学习目的 今天我们学习了三种排序方法:冒泡排序法、选择排序法、插入排序法。 相关技术,及其实用 ...

  • 冒泡排序

    C语言的简单排序方法:大数上浮,下数下沉.

  • 关于初学者对冒泡排序算法的错误认识

    关于冒泡排序,我觉得是初学C语言时再也熟悉不过的基本排序算法了,还记得在C语言课上老师“声情并茂”地讲着这个是考试...

  • 数据结构02-高效排序算法

    第二章 高效排序算法 第二章 高效排序算法一、快速排序基本思想快速排序图示一次划分C 语言实现Java 语言实现算...

  • 排序

    图解:C语言入门:插入排序(代码实现,而不是排序方法阐述) - Rivival_S 的博客 - CSDN博客 插入...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • 基本排序(C语言实现)

  • c语言排序算法

    c语言排序算法

  • C实现排序算法

    排序是算法中的重要内容,通过复习排序可以对算法的基本思路和分析方法进行把握。利用c复习排序算法还可以同时复盘c的内...

网友评论

      本文标题:C语言_3种基本排序方法

      本文链接:https://www.haomeiwen.com/subject/dygrdctx.html