// QuickSort.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "iostream"
using namespace std;
// 说明:排序算法 - 快速排序, 通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到
// 整个序列有序;
int FindPivotIndex(double a[], int low, int high)
{
double dTemp = a[low];
while (low < high)
{
while (low < high && a[high] > dTemp)
{
high--;
}
while (low < high && a[low] < dTemp)
{
low++;
}
swap(a[low], a[high]);
}
return low;
}
void QuickSort(double a[], int low, int high)
{
if (low < high)
{
int iIndex = FindPivotIndex(a, low, high);
QuickSort(a, low, iIndex - 1);
QuickSort(a, iIndex + 1, high);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
double a[] = {2.0, 5.4, 4.0, 8.0, 3.0, 5.0, 1.0, 9.0, 7.0};
int n = sizeof(a) / sizeof(*a);
cout<<"排序前:\n";
for each (double x in a)
{
cout<<x<<" ";
}
cout<<endl;
QuickSort(a, 0, n-1);
cout<<"排序后:\n";
for each (double x in a)
{
cout<<x<<" ";
}
cout<<endl;
return 0;
}
排序算法之快速排序
最新推荐文章于 2025-02-15 08:00:00 发布