zoukankan      html  css  js  c++  java
  • 快速排序

    快速排序,在实际应用中是表现最好的排序算法,其实际思想来自冒泡排序,冒泡排序是通过相邻元素的比较和交换把最小的冒泡到最顶端,而快排是比较和交换小数和大数,这样一来不仅把小数冒泡到上面同时也把大数沉到下面。

    不稳定

    O(nlgn)

     1 void swap(int &a, int &b)
     2 {
     3     int temp;
     4     temp = a;
     5     a = b;
     6     b = a;
     7 }
     8 
     9 int partition(int *arr, int left, int right)
    10 {
    11     int pivotKey = arr[left];
    12     int pivotPoint = left;
    13     while(left < right)
    14     {
    15         while(left < right && arr[right] >= pivotKey)//右指针先移动
    16             right --;
    17         while(left < right && arr[left] <= pivotKey)
    18             left ++;
    19         swap(arr[left], arr[right]);
    20     }
    21     swap(arr[pivotPoint], arr[left]);
    22     return left;
    23 }
    24 
    25 void quickSort(int *arr, int left, int right)
    26 {
    27     if(left >= right)
    28         return ;
    29     int pivotPos = partition(arr, left, right);
    30     quickSort(arr, left, pivotPos-1);
    31     quickSort(arr, pivotPos+1, right);
    32 }
  • 相关阅读:
    Python 基础
    Python 基础
    Python 基础
    Python 基础
    Python 基础
    Python 基础
    Python 基础
    Python 基础
    Python 基础
    Python 基础
  • 原文地址:https://www.cnblogs.com/QoQian/p/5475604.html
Copyright © 2011-2022 走看看