2022年常用的排序算法 .pdf
《2022年常用的排序算法 .pdf》由会员分享,可在线阅读,更多相关《2022年常用的排序算法 .pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、选择排序1、算法思想简单描述:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。选择排序是不稳定的。算法复杂度O(n2) 2、代码:void select_sort(int *x, int n) int i, j, min, t; for (i=0; in-1; i+) /*要选择的次数:0n-2 共 n-1 次*/ min = i; /* 假设当前下标为i 的数最小,比较后再调整*/ for (j=i+1; jn; j+)/*循环找出最小的数的下标是哪个*/ if (*(x+j) =2
2、个数已经是排好顺序的,现在要把第n 个数插到前面的有序数中,使得这n 个数也是排好顺序的。如此反复循环,直到全部排好顺序。直接插入排序是稳定的。算法时间复杂度O(n2)。2、代码:void insert_sort(int *x, int n) int i, j, t; for (i=1; i=0 & t0; h=k) /*循环到没有比较范围*/ for (j=0, k=0; j *(x+j+1) /*大的放在后面,小的放到前面*/ t = *(x+j); *(x+j) = *(x+j+1); *(x+j+1) = t; /*完成交换 */ k = j; /* 保存最后下沉的位置。这样k 后面的
3、都是排序排好了的。*/ 四、希尔排序1、算法思想简单描述在直接插入排序算法中,每次插入一个数,使有序序列只增加1 个节点, 并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell 于 1959 年在以他名字命名的排序算法中实现了这一思想。算法先将要排序的一组数按某个增量 d 分成若干组, 每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1 时,整个要排序的数被分成一组,排序完成。下面的函数是一个希尔排序算法的一个实现,初次取序列
4、的一半为增量,以后每次减半,直到增量为1。希尔排序是不稳定的。2、代码void shell_sort(int *x, int n) int h, j, k, t; for (h=n/2; h0; h=h/2) /*控制增量 */ for (j=h; j=0 & t*(x+k); k-=h) *(x+k+h) = *(x+k); *(x+k+h) = t; 五、快速排序1、算法思想简单描述快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少1。快速排序通过一趟扫描,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年常用的排序算法 2022 常用 排序 算法
限制150内