zoukankan      html  css  js  c++  java
  • 算法学习~分治法~快速排序

    天天都在排序。。简直就是要给这个混乱的世界一个正确的秩序。。不过嘛。排序也有快慢之分,

    冒泡排序法,,思路很简单就是一个个上去打擂台,,这样的时间复杂度很糟糕,,O(N^2)中O是一个常数,O(N^2)是指最大上限(估值)n(n-1)/2 = (n^2 - n)/2最高位估值仍为n^2两种情况是一样的。

    选择排序法,,每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最前(最后),直到全部待排序的数据元素排完。选择排序是不稳定的排序方时间复杂度为O(n),最坏情况下仍为O(n^2)。

    排序比较好的还有这种logn级别的排序法,

    先上代码,,个位可以先瞅瞅,。一般第一次不会很明白。。下面有解释。。

     1 //快速排序
     2 #include<stdio.h>
     3 int main()
     4 {   void quick_sort(int s[], int l, int r);
     5     int a[10001],i,x;
     6    while(~scanf("%d",&x))
     7    {  for(i=0;i<x;i++)
     8         scanf("%d",&a[i]);
     9      quick_sort(a,0,x-1);//第一个参数是数组地址,然后是需要排序的区间,i就是长度
    10    for(i=0;i<x;i++)
    11     {
    12        printf("%d ",a[i]);//再顺序输出
    13     }
    14     printf("
    ");
    15    }
    16 }
    17 void quick_sort(int s[], int l, int r)//返回调整后基准数的位置
    18 {
    19     if (l < r)//只要是满足起点小于终点
    20     {
    21         //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1
    22         int i = l, j = r, x = s[l];//赋予初始值,i就是起点j就是终点 //s[l]就是当前的值
    23         while (i<j)
    24         {
    25             while(i<j&&s[j]>=x) // 从右向左找第一个小于x、起点的数
    26                 j--;//找到第一个小于的就会跳出循环j的值就是当前小于的那个
    27             if(i<j)
    28                 s[i++]=s[j];//将s[j]填到s[i]中,s[j]就形成了一个新的坑,i++
    29             while(i<j&&s[i]<x) // 从左向右找第一个大于等于x的数
    30                 i++;
    31             if(i<j)
    32                 s[j--]=s[i];//
    33         }
    34         s[i] = x;//退出时,i等于j。将x填到这个坑中。
    35         quick_sort(s,l,i-1); //递归调用前半段和后半段。
    36         quick_sort(s,i+1,r);
    37      }
    38 }
  • 相关阅读:
    有几种不同类型的自动代理?
    使用 Spring 通过什么方式访问 Hibernate?
    单片,SOA 和微服务架构有什么区别?
    如何给 Spring 容器提供配置元数据?
    在 Spring AOP 中,关注点和横切关注的区别是什么?
    Java Concurrency API 中的 Lock 接口(Lock interface) 是什么?对比同步它有什么优势?
    移动文件用哪个命令?改名用哪个命令?
    synchronized 的作用?
    “a==b”和”a.equals(b)”有什么区别?
    什么是 Spring beans?
  • 原文地址:https://www.cnblogs.com/luyi14/p/4098265.html
Copyright © 2011-2022 走看看