c语言各种排序法详解 下载本文

内容发布更新时间 : 2024/5/3 12:13:24星期一 下面是文章的全部内容请认真阅读。

实用文档

一 插入排序

1.1 直接插入排序

基本思想:每次将一个待排序额记录按其关键码的大小插入到一个已经排好序的有序序列中,直到全部记录排好序。 图解:

代码实现:

[cpp] view plain copy

1. //直接顺序排序

2. void InsertSort(int r[], int n) 3. {

4. for (int i=2; i

标准文案

实用文档

5. {

6. r[0]=r[i]; //设置哨兵 7. for (int j=i-1; r[0]

11. for(int k=1;k

1.2 希尔排序

基本思想是: 先将整个待排序记录序列分割成若干个子序列,在在序列内分别进行直接插入排序,待整个序列基本有序时,再对全体记录进行一次直接插入排序。 图解:

代码实现:

[cpp] view plain copy

1. //希尔排序 2. void ShellSort(int r[], int n) 3. { 4. int i;

标准文案

实用文档

5. int d; 6. int j;

7. for (d=n/2; d>=1; d=d/2) //以增量为d进行直接插入排序 8. {

9. for (i=d+1; i

11. r[0]=r[i]; //暂存被插入记录 12. for (j=i-d; j>0 && r[0]

17. for(i=1;i

二 交换排序

2.1 起泡排序

起泡排序是交换排序中最简单的排序方法,其基本思想是: 两两比较相邻记录的关键码,如果反序则交换,直到没有反序的记录为止。 图解:

标准文案