• 快排


      1 #include<stdio.h>
      2 
      3 
      4 
      5 /*******************************
      6                    快排
      7                    *************************************/
      8 int quicksort_up(int a[],int f1,int f2)
      9 {
     10     int i=f1-1,j=f2,v=a[f2],t;
     11     for(;;)
     12     {
     13         while(a[++i]<v);
     14         while(a[--j]>v)
     15         {
     16             if(j==f1)
     17                 break;
     18         }
     19         if(i>=j)break;
     20         t=a[i];
     21         a[i]=a[j];
     22         a[j]=t;
     23     }
     24     t=a[i];
     25     a[i]=a[f2];
     26     a[f2]=t;
     27     return i;
     28 }
     29 int quicksort_down(int a[],int f1,int f2)
     30 {
     31     int i=f1,j=f2+1,v=a[f1],t;
     32     for(;;)
     33     {
     34         while(a[--j]<v);
     35         while(a[++i]>v)
     36         {
     37             if(i==f2)
     38                 break;
     39         }
     40         if(i>=j)break;
     41         t=a[i];
     42         a[i]=a[j];
     43         a[j]=t;
     44     }
     45     t=a[j];
     46     a[j]=a[f1];
     47     a[f1]=t;
     48     return j;
     49 }
     50 
     51 
     52 void partition_up(int a[],int first,int last)
     53 {
     54     int i;
     55     if(first<last)
     56     {
     57         i=quicksort_up(a,first,last);
     58         partition_up(a,first,i-1);
     59         partition_up(a,i+1,last);
     60     }
     61 }
     62 
     63 
     64 void partition_down(int a[],int f1,int f2)
     65 {
     66     int i;
     67     if(f1<f2)
     68     {
     69         i=quicksort_down(a,f1,f2);
     70         partition_down(a,f1,i-1);
     71         partition_down(a,i+1,f2);
     72     }
     73 }
     74 
     75 int main()
     76 {
     77 
     78     int n=5,a[15];
     79     int i;
     80     for(i=0;i<n;i++)
     81     {
     82         scanf("%d",&a[i]);
     83     }
     84 
     85     partition_up(a,0,n-1);
     86 
     87     for(i=0;i<5;i++)
     88     {
     89         printf("%d ",a[i]);
     90     }
     91     printf("
    ");
     92 
     93     partition_down(a,0,n-1);
     94 
     95     for(i=0;i<n;i++)
     96     {
     97 
     98         printf("%d ",a[i]);
     99 
    100     }
    101     printf("
    ");
    102     return 0;
    103 }
  • 相关阅读:
    8位单片机可用的 mktime localtime函数
    【转载】linux获取mac地址
    【转载】openwrt框架分析
    JVM调优工具Arthas的使用
    Grafana监控JVM
    JAVA死锁排查-性能测试问题排查思路
    JVM的堆内存泄漏排查-性能测试
    性能测试之JVM的故障分析工具VisualVM
    性能测试之 JVM 异常说明和分析工具
    性能测试之 JVM 概念认识
  • 原文地址:https://www.cnblogs.com/zeze/p/chzeze.html
Copyright © 2020-2023  润新知