快速排序
来源:互联网 发布:2016淘宝助理手机版 编辑:程序博客网 时间:2024/06/07 07:15
快速排序
快速排序使用分治法策略。
它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
代码就表达了快排的核心思想, 找到比其小的数, 就换位置, 左右左右…的方向来插入数
void Fun(int a[], int Frist, int Last){ int i, j, t; if (Frist < Last) { i = Frist, j = Last, t = a[Frist]; while (i < j) { while (i < j && t > a[j]) j--; if (i < j) a[i++] = a[j]; while (i < j && t < a[i]) i++; if (i < j) a[j--] = a[i]; } a[i] = t; Fun(a, Frist, i - 1); Fun(a, i + 1, Last); }}
源代码
#include <iostream>#include <cstdlib>using namespace std;void Fun(int a[], int Frist, int Last);const int N = 100;int main(){ int *a = new int[N]; int i; i = 0; int n; cin >> n; while (i < n) cin >> a[i++]; Fun(a, 0, n); for (i = 0; i < n; i++) cout << a[i] << " "; free(a); system("pause"); return 0;}void Fun(int a[], int Frist, int Last){ int i, j, t; if (Frist < Last) { i = Frist, j = Last, t = a[Frist]; while (i < j) { while (i < j && t > a[j]) j--; if (i < j) a[i++] = a[j]; while (i < j && t < a[i]) i++; if (i < j) a[j--] = a[i]; } a[i] = t; Fun(a, Frist, i - 1); Fun(a, i + 1, Last); }}
阅读全文
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- HDU 6003 Problem Buyer(贪心)
- 51 nod1286三段子串
- spring中reques的运用
- tensorflow的tf.reduce_mean()函数的使用方法
- mybatis入门基础(五)----动态SQL
- 快速排序
- 笨方法学Python 习题 9: 打印,打印,打印
- 上班遇到的坑
- Tree----- 99. Recover Binary Search Tree
- 【幸运数】求解过程
- AsyncTask的实现原理
- 2017 Multi-University Training Contest
- POJ2096
- springmvc总结