经典排序
Cairo Dai
这个作者很懒,什么都没留下…
展开
-
插入排序(思想及代码实现)
1.直接插入排序 基本思想:每次选择待排序序列中的第一条记录,根据其值大小将其插入到已排序的有序序列当中,直至所有记录全部排序完毕。 void DirectInsertSort(int *list, int len){ int i,j,temp; for(i=1; i<len; i++){ temp=list[i]; for(j=i-1; j>=0 && list[j]>temp; j--){ l原创 2020-09-09 22:11:35 · 414 阅读 · 0 评论 -
选择排序(思想及代码实现)
1.简单选择排序 基本思想:每次都从未排序的序列中选择一个最小的数放在已排序列的最左边,直至排序完成。 void SelectSort(int list[], int len){ for(int i=1; i<len; i++){ int temp=i; for(int j=i+1; j<len; j++){ if(list[j]<list[temp]) temp=j; }原创 2020-09-10 11:42:11 · 1169 阅读 · 0 评论 -
交换排序(思想及代码实现)
交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列前端移动。 1.快速排序 基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据要比另外一部分的所有数据都要小,然后再按照该方法对两部分的数据序列分别再进行快排。所以整个排序过程可以递归进行,以此达到整个数据均变为有序序列。 基本步骤: 将最左侧的元素作为‘枢轴’放入“哨所”。 设置low和high分别指向数组两端。 high向左移动,一旦遇到比哨所元素小的元素就将其移入左边的low位置。 low向右原创 2020-09-11 15:42:48 · 929 阅读 · 0 评论 -
归并排序(思想及代码实现)
基本思想:归并排序也是一类高效的基于比较的排序算法,是分治思想的典型应用。它的工作原理是首先将未排序序列分成n份元素个数为1的子序列(个数为1被认为是有序的),然后进行合并,最后子序列数为1即已排序序列。归并排序是时间复杂度为次平方中唯一的稳定的排序算法。 基本步骤: 将原始序列分成n份,每份元素个数为1。 反复进行有序序列的合并,直到最后子序列数为1。 代码实现: void Merge(int arr[], int low, int mid, int high, int &ans[])原创 2020-09-11 15:49:42 · 373 阅读 · 0 评论