您的位置:首页 > 其它

快速排序的实现两种实现

2011-01-11 11:26 316 查看
1、递归实现

#include<iostream>
using namespace std;
void QuickSort(int arr[], int low, int  high);
inline void Swap(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}

int main()
{
int arr[] = {65, 70, 75, 80, 85, 60, 55, 50, 45};
int n = sizeof(arr) / sizeof(int);
cout<<"排序前为:";
for(int i=0; i<n; i++)
cout<<arr[i]<<" ";
cout<<endl;
QuickSort(arr, 0, n-1);
cout<<"排序后为:";
for(int i=0; i<n; i++)
cout<<arr[i]<<" ";
cout<<endl;
return 0;
}

void QuickSort(int arr[], int low, int high)
{
if(low > high)
return;
int i = low;
int j = high;
int target = arr[low]; //选取低位low位置的元素作为目标元素
while(i < j)
{
while(j>i && arr[j]>target)
j--;
if(j<=i)
break;
while(i<j && arr[i]<=target)
i++;
if(i>=j)
break;
Swap(arr[i], arr[j]); //交换
j--;
i++;
}
Swap(arr[low], arr[j]); //将low位的目标元素放到正确位置
QuickSort(arr, low, j-1);
QuickSort(arr, j+1, high);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: