クイックソートC++実装

1326 ワード

Theory:
早列の基本思想:1.まず数列から1つの数を基準数として取り出す.2.パーティション化プロセスでは、この数より大きい数を右に、それより小さい数または等しい数を左にすべて配置します.3.各区間が1つになるまで、左右の区間について2番目のステップを繰り返す.
Implement:
#include
using namespace std;

void quick_sort(int array[], int start, int last)
{
    int i = start;
    int j = last;
    int temp = array[i];
    if (i < j)
    {
        while (i < j)
        {
            while (i < j && array[j]>=temp )
                j--;
            if (i < j)
            {
                array[i] = array[j];
                i++;
            }

            while (i < j && temp > array[i])
                i++;
            if (i < j)
            {
                array[j] = array[i];
                j--;
            }
                        
        }
        //      i  
        array[i] = temp;
        quick_sort(array, start, i - 1);
        quick_sort(array, i + 1, last);
    }
}

int main()
{
    int array[]={12,345,545,123,45,10,8,23,1,21};
    int len=sizeof(array)/sizeof(int);
    cout<

Test結果:
The orginal arrayare: 12 345 545 123 45 10 8 23 1 21 The sorted arrayare: 1 8 10 12 21 23 45 123 345 545
Summary:
  • 速列は分治の思想で、1つの基準数を取って、配列を左右2部にして、左の小さい、右の大きい
  • 左右2部を順次再区分し、基準をとる.最終結果
  • 速い列のこの思想も求めることができて、配列の中のK番目の大きい値