首先,从个位数开始,按照数字的个位数进行排序,将数字放入0~9这10个桶中,第一次排序后,得到一个以个位数为基准排序后的序列;然后,按照十位数进行排序,将数字放入0~9这10个桶中,第二次排序后,得到一个以十位数为基准排序后的序列;重复以上步骤,直到最高位排序完成,得到一个完全有序的序列。以下是...
写外部循环; for(i = 0; i < n ; i++) for(j = n - 1 ; j > i ; j--) // j>i的是扫描第一遍以后,下标最小的一位数,已经变成最大的一位数
原理:以第一轮为例,将第一个数和第二个比较,若比它大则交换,由于交换后的第一个数前面没有比较对象,故它暂时确定下来,而交换后的第二个数和第三个数进行比较,若比它大则交换,此时交换后的第二位数则可以向前比较,若比它前面的那个数小则交换,直到交换到第一个数停止(到尽头) 插入排序.png 插入排序很特...
(1)冒泡排序;(2)选择排序;(3)插入排序;(4)希尔排序;(5)归并排序; (6)快速排序;(7)基数排序;(8)堆排序;(9)计数排序;(10)桶排序。 1、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进...
插入排序动图演示: 代码: 4、快速排序 算法思想: 选取第一个数为基准 将比基准小的数交换到前面,比基准大的数交换到后面 对左右区间重复第二步,直到各区间只有一个数 快速排序动图演示: 代码: 5、堆排序 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同...
n-1]); count++; } printf("总排序方法:%d\n",count); }可以看到,总的排序方式是3024=9*8*7*6 根据排列组合的知识可以知道,这就相当于9个数中任意找4个出来排序的方法,也就是C94 结果正确。注意结果一共有 3024行,我只截了一部分。
(right_low = right_high) for(i=right_low;i=right_high;i+) tempk+ = datai; /将排好序的小分组转移到原数组中 for(i=0;ihigh-low+1;i+) datalow+i = tempi; free(temp); return;/*-基数排序-*/该函数的作用是找出num的pos位数的数字(比如:23的个位数数字是3)int getNumPos(int num, ...
*直接插入排序 *希尔排序 2.选择排序 *简单选择排序 *堆排序 3.交换排序 *冒泡排序 *快速排序 4.归并排序 5.基数排序 不稳定排序:简单选择排序,快速排序,希尔排序,堆排序 稳定排序:冒泡排序,直接插入排序,归并排序,奇数排序 1、插入排序 将第一个和第二个元素排好序,然后将第3个元素插入到已经排好序的元素...
swap(&arrj-1,&arr); //交换两个数据 hasSwap = true; if(!hasSwap) break; 2.插入排序 思路:把一个数字插入一个有序的序列中,使之仍然保持有序,如对于需要我们进行排序的数组,我们可以使它的前i个数字有序,然后再插入i+1个数字,插入到合适的位置使之仍然保持有序,直到所有的数字有序。