zoukankan      html  css  js  c++  java
  • 【排序】冒泡排序+快速排序

    冒泡排序:

     1 //复杂度:O(n^2)
     2 //比较次数:n*(n-1)/2 ;移动等数量级
     3 #include<iostream>
     4 #include<cstdio>
     5 #include<cstdlib>
     6 using namespace std;
     7 const int INF = 0x7fffffff;
     8 void Bubble_sort(int* A, int n)
     9 {
    10     for(int i = n-1; i >= 0; i--)
    11     {
    12         A[n] = A[i];
    13         int _max = -INF, pos = -1;
    14         for(int j = 0; j <= i; j++)
    15         {
    16             if(_max < A[j]) _max = A[j], pos = j;
    17         }
    18         A[pos] = A[n];
    19         A[i] = _max;
    20     }
    21     for(int i = 0; i < n; i++)  {if(i) printf(" "); printf("%d", A[i]);}
    22     printf("
    ");
    23 }
    24 
    25 int main()
    26 {
    27     int A[10] = {1, 9, 3, 7, 5, 2, 8, 4, 6, 10};
    28     Bubble_sort(A, 10);
    29     return 0;
    30 }
    View Code

    快速排序:

     1 //一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,
     2 //则可分别对这两部分记录继续进行排序,以达到整个序列有序
     3 //复杂度:O(nlnn)
     4 #include<iostream>
     5 #include<cstdio>
     6 #include<cstdlib>
     7 #include<list>
     8 using namespace std;
     9 //改进前
    10 //void Exchange(int* L, int i, int j)
    11 //{
    12 //    int tmp = L[i]; L[i] = L[j]; L[j] = tmp;
    13 //}
    14 
    15 int Partition(int* L, int low, int high){
    16     L[0] = L[low];
    17     int pivotkey = L[low];
    18     while(low < high)
    19     {
    20         while(low < high && L[high] >= pivotkey) high--;
    21         //Exchange(L, low, high);
    22         L[low] = L[high];
    23         while(low < high && L[low] <= pivotkey) low++;
    24         //Exchange(L, low, high);
    25         L[high] = L[low];
    26     }
    27     L[low] = L[0];
    28     return low;//返回枢轴所在位置
    29 }
    30 void Quick_sort(int* L, int low, int high)
    31 {
    32     if(low >= high)  return ;
    33     int pivotkey = Partition(L, low, high);
    34     Quick_sort(L, low, pivotkey-1);
    35     Quick_sort(L, pivotkey+1, high);
    36 }
    37 
    38 int main()
    39 {
    40     int L[11] = {0, 3, 9, 1, 7, 5, 2, 8, 4, 6, 10};
    41     Quick_sort(L, 1, 10);
    42     for(int i = 1; i <= 10; i++) {if(i) printf(" "); printf("%d", L[i]);}
    43     printf("
    ");
    44     return 0;
    45 }
  • 相关阅读:
    Pyhton学习blog地址(四十五)
    网络基础之网络协议篇(四十四)
    网络编程——socket(四十三)
    异常处理(四十二)
    Java 源代码和 C 源代码的运行区别
    Java 访问控制关键字
    Confluence 6 快捷键
    MariaDB 服务器在 MySQL Workbench 备份数据的时候出错如何解决
    Confluence 6 教程:在 Confluence 中导航
    Confluence 6 开始使用
  • 原文地址:https://www.cnblogs.com/LLGemini/p/4122259.html
Copyright © 2011-2022 走看看