C语言几种排序算法的实现
2017-04-24 21:12
323 查看
1.冒泡排序
假设有N个数据随机排列。将N-1位置的数据与N-2位置的数据比较。如果N-1位置的数据比N-2位置的数据小,则交换两个位置的数字,紧接着比较N-2位置的数据与N-3位置数据的大小,依次类推,直到位置0。一次排序过后,位置0的数据就是最小值,通过一次排序,最小值好像泡沫一样浮到数据序列的前面。接着再进行一次这种排序,位置1的数据就是第二小的,以此类推就i可以得到排序完成的数据。代码如下:
void BubbleSort(int r[], int length){
int i1, i2, flag;
int tmp;
for (i1 = 0; i1 < length - 1; i1++){
flag = 0;
for (i2 = length - 1; i2 > i1; i2--){
if (r[i2] < r[i2 - 1]){
tmp = r[i2-1];
r[i2 - 1] = r[i2];
r[i2] = tmp;
flag = 1;
}
}
if (flag == 0){
break;
}
}
}
如果一次排序中fflag没有发生改变,说明数字序列已经排序完毕。
2.选择排序
选择排序使用一个变量记录下标,先将0位置的数据与0位置后的的其他数据进行比较,变量记录为0,每次比较如果发现数据比位置0的数据小就将该位置的下标赋值给变量,全部比较完过后就查看变量是否发生改变,如果发生改变就交换两个位置的数据。每次排序过后即得到一个最小值。由此,多次排序之后即可以得到一个排序的数据序列。代码如下:
void SelectSort(int r[], int length){ int i1, i2, i3; int tmp; for (i1 = 0; i1 < length - 1; i1++){ i3 = i1; for (i2 = i1 + 1; i2 < length; i2++){ if (r[i2] < r[i3]){ i3 = i2; } } if (i3 != i1){ tmp = r[i1]; r[i1] = r[i3]; r[i3] = tmp; } } }
3.快速排序
快速排序通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据要小,然后按照此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。代码如下:
void QuickSort(int r[], int length){ int i1 = 0, i2 = length - 1; int val = r[0]; if (length > 1){ while (i1 < i2){ for (; i2 > i1; i2--){ if (r[i2] < val){ r[i1] = r[i2]; break; } } for (; i1 < i2; i1++){ if (r[i1] > val){ r[i2] = r[i1]; break; } } } r[i1] = val; QuickSort(r, i1); QuickSort(r + i1 + 1, length - 1 - i1); } }
4.插入排序
插入排序就像扑克牌拾牌一样,每一次都抽取都将手中的牌从小到大排序。基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序序列。void InsertionSort(int r[], int first, int last){ int i1, i2; int tmp; for (i1 = first + 1; i1 <= last; i1++){ tmp = r[i1]; i2 = i1 - 1; while ((i2 >= first) && (r[i2] > tmp)){ r[i2 + 1] = r[i2]; i2--; } r[i2 + 1] = tmp; } }
相关文章推荐
- 几种常见内部排序算法分析与实现(C语言描述)
- 几种排序算法的C语言实现
- 几种常用排序算法的C语言实现
- 几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
- 几种常见排序算法的c语言实现
- C语言实现几种常见排序算法
- 几种常见排序算法的C语言实现
- 几种常用的排序算法(c语言实现)
- c语言实现几种排序算法
- 几种常用排序算法的C语言实现
- 几种常见排序算法的c语言实现
- 几种常见排序算法的c语言实现
- 排序算法(C语言实现)
- 几种常用排序算法的c#实现(冒泡、选择、插入)
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- c语言编程的几种排序算法比较
- 用java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- 重温经典排序思想,并用C语言指针实现排序算法(转)