赞
踩
快速排序是冒泡排序的改进算法。它也是通过不断比较和移动交换来实现排序的,只不过它的实现增大了记录的比较和移动的距离,将关键字较大的元素从前面直接放到后面,关键字较小的元素直接从后面放到前面,从而减小了比较次数和交换次数。
通过不断的函数循环调用以实现数据的正确排序,具体代码如下:
#include <iostream> using namespace std; void print(int *p,int len) { for (int i = 0; i <= len; i++) { cout << p[i]; } cout << endl; } void Quick_Sort( int * arr, int begin,int end ) { cout << "当前数据:"; print(arr,7); if (begin > end) return; //函数循环的结束条件 int tmp = arr[begin]; int i = begin; int j = end; while (i!= j) { while (arr[j] >= tmp && i< j) j--; while (arr[i]<=tmp&&i<j) i++; if (j > i) { int t = arr[i]; arr[i] = arr[j]; arr[j] = t; } } /*int w = arr[i]; arr[i] = arr[begin]; arr[begin] = w;*/ arr[begin] = arr[i]; arr[i] = tmp;//1次循环结束 Quick_Sort( arr, begin, i-1);//前段 Quick_Sort( arr, i+1, end);//后段 } int main() { int a[8] = {5,9,3,2,6,3,8,1}; cout << "初始数据:"; print(a,7); Quick_Sort(a, 0, 7); return 0; }
其中有2点细节个人认为可以自己实践体会
/*int w = arr[i];
arr[i] = arr[begin];
arr[begin] = w;*///第一种
arr[begin] = arr[i];
arr[i] = tmp;//第二种
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。