2 程序中的各类排序算法
2018-06-18 04:08:10来源:未知 阅读 ()
1、冒泡排序
冒泡排序算法的运作如下:
(1)临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,
(2)这样一趟过去后,最大或最小的数字被交换到了最后一位,
(3)然后再从头开始进行两两比较交换,直到倒数第二位时结束。
冒泡排序总的平均时间复杂度为
1 void bubble_sort(int a[], int n) 2 { 3 int i, j, temp; 4 for (j = 0; j < n - 1; j++) 5 { 6 for (i = 0; i < n - 1 - j; i++) 7 { 8 if(a[i] > a[i + 1]) 9 { 10 temp = a[i]; 11 a[i] = a[i + 1]; 12 a[i + 1] = temp; 13 } 14 } 15 } 16 }
2、快速排序
快速排序是对冒泡排序的一种改进,它的基本思想是:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序
过程可以递归进行,以此达到整个数据变成有序序列。
设要排序的数组是A[0]... ... A[N-1],首先任意选取一个数据作为关键数据,然后将所有比它小的数据都放到它前面,所有比它大的数据都放到它后面,这个过程称为一趟
快速排序。
值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。
1 int FindPos(int *a, int low, int high) 2 { 3 int val = a[low]; 4 5 while (low < high) 6 { 7 while ((low < high) && (a[high] >= val)) 8 { 9 --high; 10 } 11 a[low] = a[high]; 12 13 while ((low < high) && (a[low] <= val)) 14 { 15 ++low; 16 } 17 a[high] = a[low]; 18 } 19 a[low] = val; 20 21 return high; 22 } 23 24 void QuickSort(int *a, int low, int high) 25 { 26 int pos; 27 28 if (low < high) 29 { 30 pos = FindPos(a, low, high); 31 QuickSort(a, low, pos-1); 32 QuickSort(a, pos+1, high); 33 } 34 }
3、插入排序
插入排序算法的运作如下:
(1)
4、希尔排序
希尔排序算法的运作如下:
(1)
5、选择排序
选择排序算法的运作如下:
设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]比a[2]~a[10]都小, 则不进行交换。若a[2]~a[10]中有一个以上比a[1]小,则将其中最小的一个与a[1]
交换,此时a[1]中存放了10个中最小的数。第二轮将a[2]与a[3]~a[10]比较,将剩下的最小者与a[2]对换,此时a[2]中存放的是10个中第二小的数,依此类推。
1 for (i = 0; i < 9; i++) 2 { 3 min = i; 4 for (j = i+1; j < 10; j++) 5 { 6 if (a[min] > a[j]) 7 { 8 min = j; 9 } 10 } 11 temp = a[i]; 12 a[i] = a[min]; 13 a[min] = temp; 14 }
6、归并排序
归并排序算法的运作如下:
(1)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:插入排序_C语言_数组
下一篇:快速排序_C语言_数组
- C语言程序结构 2020-05-31
- ftp客户端封装 2020-05-10
- C代做 C++代做 C++编程代做 C++程序代做 2020-04-29
- 测量C++程序运行时间 2020-04-17
- C语言中的宏定义 2020-04-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash