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

     1 #include<iostream>
     2 using namespace std;
     3 //快速排序
     4 void Quicksort(int a[], int low, int high)
     5 {
     6     if (low >= high)
     7         return;
     8     int first = low;
     9     int last = high;
    10     int key = a[first];
    11     while (first < last)
    12     {
    13         while (first < last&&a[last] >= key)
    14         {
    15             --last;
    16         }
    17         a[first] = a[last] ;
    18         while (first < last&&a[first] <= key)
    19         {
    20             ++first;
    21         }
    22         a[last] = a[first];
    23     }
    24     a[first] = key;
    25     Quicksort(a, low, first - 1);
    26     Quicksort(a, first + 1, high);
    27 }
    28 int main()
    29 {
    30     int a[10];
    31     for (int i = 0; i < 10; i++)
    32         cin >> a[i];
    33     for (auto t : a)
    34         cout << t << " ";
    35     cout << endl;
    36     Quicksort(a, 0,9);// 快速排序
    37     for (auto t : a)
    38         cout << t << " ";
    39     cout << endl;
    40     system("pause");
    41     return 0;
    42 }
     1 #include<iostream>
     2 using namespace std;
     3 int partition(int data[], int length, int start, int end)
     4 {
     5     if (data == NULL || length <= 0 || start < 0 || end >= length)
     6         throw new exception("Invalid Parameters");
     7     int index = rand() % (end - start + 1) + start;
     8     
     9     swap(data[index], data[end]);
    10     int small = start - 1;
    11     
    12     for (index = start; index < end; ++index)
    13     {
    14         if (data[index] < data[end])
    15         {
    16 
    17             ++small;
    18             if (small != index)
    19             {
    20                 swap(data[index], data[small]);
    21             }
    22         }
    23     }
    24     ++small;
    25     swap(data[small], data[end]);
    26     return small;
    27 }
    28 void quicksort(int data[], int length, int start, int end)
    29 {
    30     if (start == end)
    31         return;
    32     int index = partition(data, length, start, end);
    33     if (index > start)
    34         quicksort(data, length, start, index - 1);
    35     if (index < end)
    36         quicksort(data, length, index + 1, end);
    37 }
    38 int main()
    39 {
    40     int data[4] = { 2, 5, 2, 3 };
    41     cout << partition(data, 4, 0, 3) << endl;
    42     /*quicksort(data, 4, 0, 3);
    43     for (int i = 0; i < 4; i++)
    44         cout << data[i] << endl;*/
    45     system("pause");
    46     return 0;
    47 }
  • 相关阅读:
    Longest Palindromic Substring
    PayPal MLSE job description
    Continuous Median
    Remove Duplicates From Linked List
    Valid IP Address
    Longest substring without duplication
    Largest range
    Subarray sort
    Multi String Search
    Suffix Trie Construction
  • 原文地址:https://www.cnblogs.com/wujufengyun/p/6826222.html
Copyright © 2011-2022 走看看