首页 > 学院 > 开发设计 > 正文

快速排序

2019-11-08 03:14:37
字体:
来源:转载
供稿:网友
/* *快速排序:1、设k=a[0],将k挪到适当位置,使得比k小的元素都在k左边,比k大的元素都在k右边,                和k相等的,不关心在k左右出现均可(0(n)时间完成)            2、把k左边的部分快速排序            3、把k右边的部分快速排序 */ #include <iostream> using namespace std; void swap(int & a,int & b) {     int tmp;     tmp= a;     a = b;     b = tmp; } void QuickSort(int a[],int s,int e) {     if(s >= e)//如果要排的元素只有一个,什么也不做        return ;     int k = a[s];//k为基准点     int i = s, j =e;     while(i != j)     {         while(i < j && a[j] >= k)            --j;         swap(a[i],a[j]);         while(i < j && a[i] <= k)            ++i;         swap(a[i],a[j]);     }//处理完毕后,a[i] = k     QuickSort(a,s,i-1);//把k左边的部分快速排序     QuickSort(a,i+1,e);//把k右边的部分快速排序 } int a[10] = {25,96,65,48,51,24,12,39,91,24}; int b[10]; int main() {     int size = sizeof(a)/sizeof(int);     QuickSort(a,0,size-1);//进行快速排序     for(int i= 0; i<size; ++i)     {         cout << a[i] << ",";     }     cout << endl;     return 0; }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表