任务:对数组进行排序(快速排序或归并排序二选一)
1)快速排序:定义一个数组,使用快速排序算法将其中的元素按照从小到大的顺序进行排序。
算法输出:排好序的数组
2)归并排序:定义一个数组,使用快速排序算法将其中的元素按照从小到大的顺序进行排序。
算法输出:排好序的数组
#include<iostream>
using namespace std;
void kuaipai( int arr[], int low, int high ){
//若带排序序列只有一个元素,返回空
if (high <= low) return;
int i = low;//i,j作为指针
int j = high;
//定一个数基准数为基准数,一般为第一个(底下定的就是第一个数)
int key = arr[low];
while (i<j)
{
/*从右向左找比key小的值*/
while (arr[j] >= key && i<j)
{
j--;
}
//找到后,将key赋值给j指针指向位置, 右边指针指向位置变为key
arr[i]=arr[j];
/*从左向右找比key大的值*/
while (arr[i] <= key && i<j)
{
i++;
}
//找到后,将key赋值给i指针指向位置, 左边边指针指向位置变为key
arr[j]=arr[i];
}
if(i>=j){
arr[i]=key;
}
kuaipai(arr, low, i - 1);
kuaipai(arr, i + 1, high);
}
int main()
{
int a[] = {57, 68, 59, 52, 72, 28, 96, 33, 24};
/* sizeof(a) / sizeof(a[0])计算数组长度,这里也可以用end()-begin()来进行数组长度计算*/
int length=sizeof(a) / sizeof(a[0]);
kuaipai(a, 0, length- 1);/*这里原文第三个参数要减1否则内存越界*/
for(int i = 0; i < length; i++)
{
cout << a[i] << " ";
}
return 0;
}