快速排序

快速排序

时限:1000ms 内存限制:10000K  总时限:3000ms

描述
给定一个数列,用快速排序算法把它排成升序。
 
输入
第一行是一个整数n,表示要排序的数的个数;下面一行是用空格隔开的n个整数。
 
输出
输出排序后的数列,每个数字占一行。
 
输入样例
5
3 2 1 4 5
 
输出样例
1
2
3
4
5

#include <iostream>

using namespace std;

void quicksort(int *datapointer,int low,int high)
{

if(low>=high)
return;
int i = low;
int j = high;
int key = datapointer[low];

while(i<j)
{

while(datapointer[j]>=key&&i<j)
j--;
datapointer[i] = datapointer[j];
//cout<<"hello"<<endl;
while(datapointer[i]<=key&&i<j)
i++;
datapointer[j] = datapointer[i];
}
datapointer[i] = key;
quicksort(datapointer,low,i-1);
quicksort(datapointer,i+1,high);
}

int main()
{
int *datapointer,num;
cin>>num;
datapointer = new int[num+1];
for(int i = 1;i <= num; i++)
cin>>datapointer[i];

quicksort(datapointer,1,num);
for(i = 1;i <= num; i++)
cout<<datapointer[i]<<endl;
//cout<<endl;
return 0;
}

  

态度决定高度,细节决定成败,
原文地址:https://www.cnblogs.com/lxk2010012997/p/4357931.html