c++ 快速排序 數據結構與算法

原理(升序):

1.第一趟排序先將數組第一個數用pivot作爲基準保存

2.先從最右側開始,若遇到的元素比pivot小,則將此元素賦值給當前i代表的元素(這裏的賦值就是交換,下同)

3.再從左側開始,若遇到的元素比pivot大,則將此元素賦值給當前j代表的元素

4處理左邊子序列

5.處理右邊子序列

#include<bits/stdc++.h>
using namespace std;
void quickSort(int* arr,int low,int high);
int  main()
{
    int n,a[50];
    cin >> n;
    for(int i = 0; i < n; i++)
        cin >> a[i];
    quickSort(a,0,n-1);
    for(int i = 0; i < n; i++)
        cout << a[i] << " ";
    return 0;
}
void quickSort(int* arr,int low,int high)
{
    int i = low, j = high;
    if(i >= j)
        return;
    int pivot = arr[i];
    while(i < j && arr[j] >= pivot)
        j--;
    arr[i] = arr[j];
    while(i < j && arr[i] <= pivot)
        i++;
    arr[j] = arr[i];
    arr[i] = pivot;
    quickSort(arr,low,i-1);
    quickSort(arr,i+1,high);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章