自己实现的递归代码

来源:互联网 发布:mac锁屏界面 编辑:程序博客网 时间:2024/06/03 16:41
#include<iostream>
using namespace std;
void quick_sort(int* nums,int l,int r)
{
int key_num = nums[(l + r) / 2];//向下取整??
int i = l;
int j = r;
while (i <= j)
{
while (nums[i] < key_num)//查找
i++;
while (nums[j]>key_num)
j--;
if (i <= j)
{//交换元素,增加游标
int temp=nums[i];
nums[i] = nums[j];
nums[j] = temp;
i++;
j--;
}
}
if (j > l)//左半部分继续排序,
quick_sort(nums, l, j);
else return;//递归终止条件,当只有一个元素时则不用排序,因为其本身就是有序的
if (i < r)
quick_sort(nums, i, r);
else return;//递归终止条件
}
int main()
{
int n;
cout << "input nu" << endl;
cin >> n;
int * nums=(int*)malloc(sizeof(int));
for (int i = 0; i < n; i++)
{
int temp;
cin >> temp;
nums[i] = temp;
}
quick_sort(nums, 0, n - 1);
for (int i = 0; i < n; i++)
{
cout << nums[i]<<' ';
}
return 0;
}
原创粉丝点击