#include <iostream>
using namespace std;
#define SIZEOF(a) (sizeof(a)/sizeof(a)[0])
// 输出数组的各个元素
int printArray(int a[], int len)
{
for(int p = 0; p < len; p++)
{
cout << a[p] << " ";
}
cout << endl;
}
// 交换值
int exchange(int& a, int& b)
{
a = a + b;
b = a - b;
a = a - b;
return 0;
}
//快速排序就是选取一个值作为参考值,比它小的排它左边,比他大的排右边,然后再将左边和右边排序
int quickSort(int array[], int size)
{
if(size < 2)
{
return 0;
}
int flag = array[0];
int cur = 0;
int i = 0;
int j = size - 1;
while(i < j)
{
while(flag <= array[j] && i < j)
{
j--;
}
if(i >= j)
{
break;
}
exchange(array[cur], array[j]);
cur = j;
while(flag >= array[i] && i < j)
{
i++;
}
if(i >= j)
{
break;
}
exchange(array[cur], array[i]);
cur = i;
}
// cout << "cur:" << cur << " " << array[cur] << endl;
// cout << "cur:" << cur << " ,array:" << array << " ,&array[i]:" << &array[cur] << endl;
quickSort(array, cur);
quickSort(&array[cur + 1], size - cur - 1);
}
int main()
{
int a[] = {8, 3, 5, 9, 23, 44, 22, 4, 5};
printArray(a, SIZEOF(a));
cout << endl << "---------------------" << endl;
quickSort(a, SIZEOF(a));
printArray(a, SIZEOF(a));
return 0;
}
排序算法的C++实现----快速排序
最新推荐文章于 2024-07-22 14:00:00 发布