zoukankan      html  css  js  c++  java
  • 五种排序算法

    //-------------五种排序算法演示 
    #include "stdio.h" 
    #include "stdlib.h" 
    #include "math.h" 
    #include "dos.h" 
      
    #define Max 100 
    typedef int sqlist[Max+1]; 
      
    void insertsort(sqlist a,int n) 
    { 
      int i,j; 
      for(i=2;i<=n;i++) 
      { 
        if(a[i]<a[i-1]) 
        { 
          a[0]=a[i]; 
          for(j=i-1;a[0]<a[j];--j) 
         a[j+1]=a[j]; 
          a[j+1]=a[0]; 
         } 
      } 
    } 
      
    void shellsort(sqlist r,int n) 
    { 
      int i,j,gap,x; 
      gap=n/2; 
      while(gap>0) 
       { 
         for(i=gap+1;i<=n;i++) 
          { 
           j=i-gap; 
           while(j>0) 
         if(r[j]>r[j+gap]) 
           { 
            x=r[j]; 
            r[j]=r[j+gap]; 
            r[j+gap]=x; 
            j=j-gap; 
           } 
         else j=0; 
          } 
         gap=gap/2; 
       } 
    } 
    void bubblesort(sqlist r,int n) 
    { 
      int i,j,w; 
      for(i=1;i<=n-1;i++) 
        for(j=n;j>=i+1;j--) 
           if(r[j]<r[j-1]) 
        { 
         w=r[j]; 
         r[j]=r[j-1]; 
         r[j-1]=w; 
        } 
    } 
      
    void selectsort(sqlist r,int n) 
    { 
     int i,j,k,temp; 
     for(i=1;i<=n-1;i++) 
       { 
        k=i; 
        for(j=i+1;j<=n;j++) 
          if(r[j]<r[k]) k=j; 
        temp=r[i]; 
        r[i]=r[k]; 
        r[k]=temp; 
       } 
    } 
      
    int partion( sqlist a,int n,int low,int high) 
    { 
      int p,i; 
      p=a[low]; 
      a[0]=a[low]; 
      while(low<high) 
        { 
          while(low<high&&a[high]>=p)  --high; 
          a[low]=a[high]; 
          while(low<high&&a[low]<=p) ++low; 
          a[high]=a[low]; 
       } 
      a[low]=a[0]; 
    /* for(i=1;i<=n;i++) 
        printf("%d ",a[i]); 
      printf("
    
    ");*/
      return low; 
    } 
      
    void quicksort(sqlist a,int n,int low,int high) 
    { 
      int p,i; 
      if(low<high) 
        { 
          p=partion(a,n,low,high); 
          quicksort(a,n,low,p-1); 
          quicksort(a,n,p+1,high); 
        } 
    } 
      
      
     main() 
     { 
      int i,n=10; 
      char ch; 
      sqlist a; 
      for(i=1;i<=10;i++) 
        a[i]=11-i; 
      printf("
    
    "); 
      printf("   ┌─────────────┐
    "); 
      printf("   │      1---插入排序        │
    "); 
      printf("   │      2---希尔排序        │
    "); 
      printf("   │      3---冒泡排序        │
    "); 
      printf("   │      4---选择排序        │
    "); 
      printf("   │      5---快速排序        │
    "); 
      printf("   │        请选择(1--5)      │
    "); 
      printf("   └─────────────┘
    "); 
      ch=getchar(); 
      if(ch=='1')     {printf("插入排序的结果是:
    ");insertsort(a,n);} 
      else if(ch=='2'){printf("希尔排序的结果是:
    ");shellsort(a,n);} 
      else if(ch=='3'){printf("冒泡排序的结果是:
    ");bubblesort(a,n);} 
      else if(ch=='4'){printf("选择排序的结果是:
    ");selectsort(a,n);} 
      else if(ch=='5'){printf("快速排序的结果是:
    ");quicksort(a,n,1,n);} 
      else printf("对不起,你选择的参数不对!"); 
      for(i=1;i<=10;i++) 
        printf("%5d",a[i]); 
     } 
    
  • 相关阅读:
    小总结:fibonacci数的产生
    pick the stone game
    温故知新的错题训练:Coin game
    《博弈论的诡计》
    思维+博弈论:字符串操作
    一下午的编程思索录
    2018中国大学生程序设计竞赛
    温故知新的经典贪心题目:今年暑假不AC?
    2019-2020新学的一些东西(持续更新)
    【半平面交】JZOJ3297. 【SDOI2013】逃考
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3489592.html
Copyright © 2011-2022 走看看