zoukankan      html  css  js  c++  java
  • 快速排序法又叫折半法

    快速排序法

    • 快速排序法是冒泡法一种改进。
    • 它是通过一趟的比较,把将要排序的数据分割成独立的两部分,其中一部分的所有数据都要比另一组的数据都要小。
    • 整个排序可用递归进行。
     1 #include<stdio.h>
     2 
     3 //快速排序法
     4 void quick_sort(int a[],int end,int start);
     5 int main()
     6 {
     7     int i;
     8     int s[6];
     9     printf("please enter five numbers:
    ");
    10     for(i=1;i<6;i++)
    11     {
    12         scanf("%d",&s[i]);
    13     }
    14 
    15     quick_sort(s,5,1);
    16 
    17     printf("after number:
    ");
    18     for(i=1;i<6;i++)
    19     {
    20         printf("%4d",s[i]);
    21     }
    22     printf("
    ");
    23 }
    24 
    25 void quick_sort(int a[],int end,int start)
    26 {
    27     int i,j;
    28     i=start;
    29     j=end;
    30     
    31 
    32     a[0]=a[i];
    33     while(i<j)
    34     {
    35 
    36         while(a[j]>=a[0]  && j>i)
    37         {
    38             j--;
    39         }
    40         if(i<j)
    41         {
    42             a[i]=a[j];
    43             i++;
    44         }
    45         while(a[i]<=a[0]  &&  i<j)
    46         {
    47             i++;
    48         }
    49         if(i<j)
    50         {
    51             a[j]=a[i];
    52             j--;
    53         }
    54     }
    55     a[j]=a[0];
    56     if(i<end)
    57         quick_sort(a,end,i+1);
    58     if(i>start)
    59         quick_sort(a,i-1,start);
    60 
    61 
    62 }

    快速排序法细节较多比较容易错。

    大体的思想就是:选取第一个元素为基准,和之后每一个元素比较,小的放前面,然后和之前的元素比较。之后得到两个无序的小数列,和大数列,然后使用递归 。

    下面尝试不适用递归的算法

    目前不会 哈哈哈

  • 相关阅读:
    jQuery 参考手册
    jQuery 参考手册
    ASP.NET框架例举
    判断checkbox是否选中
    ajax动态添加的li不能绑定click事件
    缓存代码备用
    关于ajax伪实时动态下拉显示最新数据
    JavaScript中,格式化DateTime
    jquery判断id是否存在
    SSI-Server Side Inclued
  • 原文地址:https://www.cnblogs.com/xiaochige/p/6005252.html
Copyright © 2011-2022 走看看