排序:交换排序(冒泡排序、快速排序)
2013-09-15 04:02
155 查看
交换排序:两两比较待排序元素,发现倒叙交换。
1、冒泡排序
2、快速排序(递归)
1、冒泡排序
2、快速排序(递归)
#include <stdio.h> #define NUM 4 /* 冒泡排序 */ void bubbleSort(int* A) { for (int i = NUM-1; i >= 1; i--) //控制待排序子序列数,开始NUM-1个,最后2个 { for (int j = 0; j < i; j++) //i个数,i-1次排序 { if (A[j+1] < A[j]) { int tmp = A[j+1]; A[j+1] = A[j]; A[j] = tmp; } } } } /* 快速排序 */ void quickSort(int* A, int low, int high) { if (low < high) { int tlow = low, thigh = high; int pos = low; int tmp = A[pos]; while (tlow <= thigh) { while (tmp < A[thigh] && tlow <= thigh) thigh--; if (tlow <= thigh) { A[pos] = A[thigh]; pos = thigh--; //保留空位,thigh置后一次 } while (A[tlow] < tmp && tlow <= thigh) tlow++; if (tlow <= thigh) { A[pos] = A[tlow]; pos = tlow++; //保留空位,tlow前进一次 } } A[pos] = tmp; quickSort(A, low, pos-1); quickSort(A, pos+1, high); } } int main(void) { int a[NUM], i = 0; printf("Enter %d integers:(ctrl+z to end)\n", NUM); while ( (scanf("%d", &a[i])) && (i < NUM) ) i++; quickSort(a, 0, NUM-1); for (int i = 0; i < NUM; i++) printf("%d ", a[i]); return 0; }
相关文章推荐
- 交换排序-冒泡排序 + 普通交换排序
- C/C++ 排序之一(冒泡排序、选择排序、交换排序)
- 交换排序——冒泡排序和快速排序,C++代码实现
- 编程菜鸟的日记-初学尝试编程-整理内部排序(交换排序(冒泡排序和快速排序)、直接选择排序、直接插入排序,希尔排序)
- 简单排序算法:冒泡排序(交换排序)
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- 算法之排序——交换排序(选择排序,冒泡排序)
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- 【排序】交换排序(冒泡排序、快速排序)
- C/C++ 排序之一(冒泡排序、选择排序、交换排序)
- 交换排序----冒泡排序 和 快速排序
- 交换排序(快速排序 冒泡排序)
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- 交换排序—快速排序
- 黑马程序员---冒泡排序和选择排序
- 练练脑javascript写直接插入排序和冒泡排序
- 排序算法(2)冒泡排序,快速排序,归并排序和基数排序MSD,LSD
- 数据结构&算法实践—【排序|交换排序】冒泡排序及改进
- 经典算法-选择排序,冒泡排序,二分查找
- Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等