排序算法:几种常见的排序算法的C语言代码
2009-09-19 21:02
274 查看
我们 在 编 程的 时 候排序算法是 经 常用到的,排序是数据 结 构的重要 组 成部分。下面是几种常 见 代 码 的C 语 言示例代 码 。 |
1.选择排序(Selection Sort) |
1. 找出a[0]~a[N-1]之间 的最小 值 或者最大 值 和 a[0] 进 行交 换 , 这样 a[0]就确定了。 |
2. 找出a[1]~a[N-1]之间 的最小 值 或者最大 值 和a[1] 进 行交 换 , 这样 a[1]就确定了。 |
3. 这样处理进行 N-1回循 环 。(N是排序的 值的个数 ) |
*ptr是int型的参数数组 指 针 , n是数据的个数。 |
选择排序示例代 码 如下: |
void selection_sort(int *ptr, int n) { int i, j, k; for(i=0; i<n-1; i++) { k = i; for(j=i+1; j<n; j++){ if(*(ptr+k) > *(ptr+j)) { k = j; } } swap((ptr+i), (ptr+k)); } } void swap(int *ptr1, int *ptr2) { int w; w = *ptr1; *ptr1 = *ptr2; *ptr2 = w; } |
如果把if(*(ptr+k) > *(ptr+j)){ 换成 if(*(ptr+k) < *(ptr+j)){ 的 话,就是降序排序了。上面的例子是升序拍序。 |
2. 交 换排序(冒泡排序)(Bubble Sort) |
*ptr是int型的参数数组 指 针 , n是数据的个数。 |
交换排序示例代 码 如下: |
void bubble_sort(int *ptr, int n) { int i, j; for(i=0; i<n-1; i++){ for(j=n-1; j>i; j--){ if(*(ptr+j-1) > *(ptr+j)){ swap((ptr+j-1), (ptr+j)); } } } } void swap(int *ptr1, int *ptr2) { int w; w = *ptr1; *ptr1 = *ptr2; *ptr2 = w; } |
3.插入排序(Insertion Sort) |
插入排序的示例代码如下: |
*ptr是int型的参数数组 指 针 , n是数据的个数。 |
void insertion_sort(int *ptr, int n) { int i, j, k; for(i=1; i<n; i++){ k = *(ptr+i); for(j = i-1; j >=0 && k<*(ptr+j); j--){ *(ptr+j+1) = *(ptr+j); } *(ptr+j+1) = k; } } |
4.快速排序(Quick Sort) |
快速排序的示例代码如下: |
*ptr是int型的参数数组 指 针 , n是数据的个数。 |
void quick_sort(int *ptr, int left, int right) { int i, j; if(left >= right) return; j = left; for(i=left+1; i <= right; i++) if(*(ptr+i) < *(ptr+left)) swap(ptr+(++j), ptr+i); swap(ptr+left, ptr+j); quick_sort(ptr, left, j-1); quick_sort(ptr, j+1, right); } void swap(int *ptr1, int *ptr2) { int w; w = *ptr1; *ptr1 = *ptr2; *ptr2 = w; } |
相关文章推荐
- 几种常见排序算法的c语言实现
- C语言几种常见排序算法(一)
- 几种常见排序算法的C语言实现
- C语言常用的几种排序算法代码(选择排序,冒泡排序,插入排序,快速排序)
- 几种常见内部排序算法分析与实现(C语言描述)
- 几种常见的排序算法 及代码实现
- Java实现几种常见排序算法代码
- Java实现几种常见排序算法代码
- 几种常见排序算法的Java代码实现
- Java实现几种常见排序算法代码
- 几种常见排序算法的c语言实现
- C语言实现几种常见排序算法
- 几种常见排序算法的c语言实现
- java中几种常见的排序算法
- 常见排序算法(冒泡,选择,快速)的C语言实现
- C语言初学者代码中的常见错误与瑕疵(9)
- 用Java实现几种常见的排序算法-Java基础-Java-编程开发
- C语言初学者代码中的常见错误与瑕疵(16)
- C语言中三种常见排序算法分析
- 分数的加减法——C语言初学者代码中的常见错误与瑕疵(11)