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

     1 #include<stdio.h>
     2 
     3 int a[101],n;
     4 void quicksort(int left,int right)  // 数组的左端和右端 
     5     {
     6         int i,j,temp;               //i,j左右两端移动的两个指针 
     7         if(left > right) return;    //多次循环后只剩一个数字时结束(看不懂先往后看) 
     8         
     9         temp = a[left];             //选定最左端为基准点 
    10         i = left,j = right;         //i从左端开始   j从右端开始 
    11         while(i!=j)                 //i,j不相同就继续执行循环 
    12         {
    13             while(a[j] >= temp && i < j )   //***(注意)一定要先从右端开始移动,因为最终要停留在一个比基准点小的数上,与基准点交换 
    14                 j--;
    15             while(a[i] <= temp && i < j )    
    16                 i++;
    17                 
    18             if(i != j)                //或者i < j,执行交换                       
    19             {
    20                 int t;
    21                 t = a[i];
    22                 a[i] = a[j];
    23                 a[j] = t;
    24             }
    25         }
    26             a[left] = a[i];             //交换基准点与选定中点 
    27             a[i] = temp;
    28             quicksort(left,i-1);        //对已分好的前半部分 排序 
    29             quicksort(i+1,right);       //对已分好的后半部分 排序
    30             return;    
    31     }
    32 int main()
    33 {
    34     int i,j;
    35     scanf("%d",&n);
    36     
    37     for(i = 0;i<n;i++)
    38     scanf("%d",&a[i]);    
    39     
    40     quicksort(0,n-1);
    41     
    42     for(i = 0;i < n;i++)
    43     printf("%d",a[i]);
    44     
    45     return 0;
    46 }
  • 相关阅读:
    知识点整理
    NGINX 内存池有感
    NGINX怎样处理惊群的
    NGINX 定时器
    制作linux内核安装包
    ES6变量的解构赋值
    jquery uploadify上传插件用法心得
    【转贴】J2EE中的13种技术规范
    【转帖】Servlet 3.0 新特性详解
    汉诺塔问题的一个C#实现
  • 原文地址:https://www.cnblogs.com/Dicer/p/8513165.html
Copyright © 2011-2022 走看看