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 }
  • 相关阅读:
    题解 CF1156A 【Inscribed Figures】
    P1352 没有上司的舞会 题解
    厦门大学附属实验中学第五次OI模拟赛(XDFZOI5)比赛须知
    属于自己的期中考总结
    做题笔记 【模板】字符串哈希
    2018 总结
    做题笔记 图的遍历 P3916
    做题笔记 Splitting into digits CF1104A
    LIS (nlogn)
    标准正交基
  • 原文地址:https://www.cnblogs.com/wujufengyun/p/6826222.html
Copyright © 2011-2022 走看看