快速排序

来源:互联网 发布:怎样使用趣味编程软件 编辑:程序博客网 时间:2024/05/03 00:13
快速排序(Quicksort)是对冒泡排序的一种改进。
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
#include<iostream>using namespace std;void Quicksort(int a[], int, int);int main(){int array[] = { 3,46,78,32,4,12,98,45,31,72 };int k;int length = sizeof(array) / sizeof(int);cout << "The original array is:" << endl;for (k = 0; k < length; k++)cout << array[k] << ",";cout << endl;Quicksort(array, 0, length - 1);cout << "The sorted array is:" << endl;for (k = 0; k < length; k++)cout << array[k] << ",";cout << endl;system("pause");return 0;}void Quicksort(int a[], int left, int right){if (left < right){int i = left, j = right, k = a[left];while (i < j){while (i < j&&a[j] >= k)             //自右向左找第一个小于k的数j--;if (i < j)a[i++] = a[j]; while (i < j&&a[i] < k)              //自左向右找第一个大于等于k的数i++;if (i < j)a[j--] = a[i];}a[i] = k;Quicksort(a, left, i - 1);Quicksort(a, i + 1, right);              //递归调用Quicksort}}


0 0
原创粉丝点击