• C/C++ 快速排序实现


     1 #include<iostream>
     2 using namespace std;
     3 void qS(int *array,int left,int right){
     4   if(left<right){    //快速排序的终止条件,当仅剩下一个元素则结束快速排序
     5     int key=array[left];
     6     int low=left,high=right;
     7     while(low<high){
     8       while(key<=array[high]&&low<high){    //8~11操作是从右边依次比较左边的元素,将小于目标值的元素置于左边
     9         high--;
    10       }
    11       array[low]=array[high];
    12       while(key>=array[low]&&low<high){    //12~15操作是从左边依次比较右边的元素,将大于目标值的元素置于右边
    13         low++;
    14       }
    15       array[high]=array[low];
    16     }
    17     array[low]=key;              //将目标值放置在空位,此时一轮快速排序结束,目标值的左边全部是小于他的,右边全部是大于它的
    18     qS(array,left,low-1);       //将目标值的左边元素集再进行快速排序
    19     qS(array,low+1,right);      //将目标值的右边元素集再进行快速排序
    20   }
    21 }
    22 
    23 int main() {
    24   int arr[]={33,14,2,444,23,444,132,55,0};
    25   qS(arr,0,sizeof(arr)/sizeof(arr[0]-1));
    26   for(int i=0;i<sizeof(arr)/sizeof(arr[0]);++i){
    27     cout<<arr[i]<<' ';
    28     }
    29   return 0;
    30 }
  • 相关阅读:
    Array
    java 设计模式
    Hashtable
    lettCode-Array
    最短路径 dijkstra
    算法:优先级队列
    7.29 DFS总结
    SZU:D89 The Settlers of Catan
    SZU:B47 Big Integer I
    7.25 RPN转换
  • 原文地址:https://www.cnblogs.com/Kaniso-Vok/p/12026876.html
Copyright © 2020-2023  润新知