实现方法:
// letcode.cpp : 定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int partition(int *R, int i, int j)
{
int pivot = R[i];
while (i < j)
{
while (i < j&&R[j] >= pivot)
j--;
if (i < j)
R[i++] = R[j];
while (i < j&&R[i] <= pivot)
i++;
if (i < j)
R[j--] = R[i];
}
R[i] = pivot;
return i;
}
void QuickSort(int* R, int low, int high)
{
int pivotpos;
if (low < high)
{
pivotpos = partition(R, low, high);
QuickSort(R, low, pivotpos - 1);
QuickSort(R, pivotpos + 1, high);
}
}
int main()
{
int list[10];
int n = 9, m = 0, i;
cout << "input 10 number:" << endl;
for (i = 0; i < 10; i++)
{
cin >> list[i];
}
QuickSort(list,m,n);
for (i = 0; i < 10; i++)
cout << list[i] << " ";
cout << endl;
system("pause");
return 0;
}
总结:用了分治思想,在寻找分支节点的时候以首元素作为基准记录,分别从数组列表后边、前边两个方向进行查找和移动,最后返回分支节点位置,递归执行,知道满足条件为止。