• 准备下上机考试,各种排序!!以后再添加和仿真像wiki上那样!


      1 #include <stdio.h>
      2 #include <string.h>
      3 #define N 6
      4 typedef struct
      5 {
      6     char name[10];
      7     int score;
      8 }student;
      9 //选择排序
     10 void sort1 (student a[])
     11 {
     12     int i,j,min;
     13     student st;
     14     for(i=0;i<N-1;i++)
     15     {
     16         min=i;
     17         for(j=i+1;j<N;j++)
     18         {
     19             if(a[min].score>a[j].score)
     20                 min=j;            
     21         }
     22         if(min!=i)
     23         {
     24             st=a[min];
     25             a[min]=a[i];
     26             a[i]=st;
     27         }
     28     }
     29 }
     30 //插入排序
     31 void sort2 (student a[])
     32 {
     33     int i,j;
     34     student st;
     35     for(i=1;i<N;i++)
     36     {
     37         st=a[i];
     38         
     39         for(j=i;j>0&&a[j-1].score>st.score;j--)
     40             a[j]=a[j-1];
     41         a[j]=st;
     42     }
     43 }
     44 //冒泡排序
     45 void sort3 (student a[])
     46 {
     47     int i,j;
     48     student st;
     49     for(i=0;i<N-1;i++)
     50     {
     51         for(j=0;j<N-i-1;j++)
     52         {
     53             if(a[j].score>a[j+1].score)
     54             {
     55                 st=a[j];
     56                 a[j]=a[j+1];
     57                 a[j+1]=st;
     58             }
     59         }
     60     }
     61 }
     62 //快速排序
     63 void sort4 (student a[],int left,int right)
     64 {
     65     int l=left,r=right;
     66     student temp;
     67     if(l<r)
     68     {
     69         temp=a[l];
     70         while(l!=r)
     71         {
     72             while(r>l&&a[r].score>temp.score) --r;
     73             if(l<r)
     74             {
     75                 a[l]=a[r];
     76                 ++l;
     77             }
     78             while(l<r&&a[l].score<temp.score) ++l;
     79             if(l<r)
     80             {
     81                 a[r]=a[l];
     82                 --r;
     83             }
     84         }
     85         a[l]=temp;
     86         sort4(a,left,l-1);
     87         sort4(a,l+1,right);
     88     }
     89 }
     90 void print(student s[])
     91 {
     92     int i;
     93     for(i=0;i<N;i++)
     94     {
     95         printf("%s %d 
    ",s[i].name,s[i].score);
     96     }
     97     printf("
    ");
     98 }
     99 int main()
    100 {
    101     int key;
    102     student s[N]={{"x",90},{"y",80},{"z",60},{"w",50},{"c",50},{"h",40}};
    103     printf("1~4继续选择:
    1、比较排序
    2、插入排序
    3、冒泡排序
    4、快速排序
    按其他键退出
    ");
    104     while(scanf("%d",&key)!=0)
    105     {    
    106         switch(key)
    107         {
    108         case 1:
    109             //比较排序
    110             printf("比较排序结果:
    ");
    111             sort1(s);
    112             print(s);
    113             break;
    114         case 2:
    115             //插入排序
    116             printf("插入排序结果:
    ");
    117             sort2(s);
    118             print(s);
    119             break;
    120         case 3:
    121             //冒泡排序
    122             printf("冒泡排序结果:
    ");
    123             sort3(s);
    124             print(s);
    125             break;
    126         case 4:
    127             //快速排序
    128             printf("快速排序结果:
    ");
    129             sort4(s,0,N-1);
    130             print(s);
    131             break;
    132         default : 
    133             return 0;
    134             break;
    135         }
    136     }
    137     return 0;
    138 }
  • 相关阅读:
    servlet里的forward和redirect的区别
    JSP九大内置对象
    float和Float的区别
    Throwable相关知识1
    常见异常和错误总结
    final/finalize/finally的区别
    mysql命令大全
    mongodb安装
    mysql编译安装(详细)
    mysql的三种安装方式(详细)
  • 原文地址:https://www.cnblogs.com/xiaoding/p/3633851.html
Copyright © 2020-2023  润新知