• 五种排序算法


    //-------------五种排序算法演示 
    #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]); 
     } 
    
  • 相关阅读:
    C语言程序设计习题参考答案
    C语言程序设计 数据类型转换
    C语言程序设计 练习题参考答案 第二章
    计算机等级考试二级C语言考试复习五要点
    计算机等级考试二级快速复习法
    C语言程序设计 辗转相除法
    ReportViewer (RDLC) 中的换行符是什么
    关于axis2中对soapfault的处理的一个小bug
    java多线程中利用优先级来分配CPU时间的实例
    马云演讲
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3489592.html
Copyright © 2020-2023  润新知