码迷,mamicode.com
首页 > 编程语言 > 详细

三种排序方法(c语言)

时间:2015-03-15 12:06:37      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include "stdio.h"
 2 void main()
 3 {void read_data(int a[],int n);
 4  void write_data(int a[],int n);
 5  void comp(int a[],int n);
 6  void insert(int a[],int n);   
 7  void bubble(int a[],int n);
 8  int i,n=0,a[200];
 9  printf("请输入元素个数:");
10  scanf("%d",&n);     
11  printf("请选择排序方法(输入1选择法,输入2为插入法,输入3位为冒泡法):");
12  scanf("%d",&i);
13  read_data(a,n);
14  if(i==1)
15    comp(a,n);
16  if(i==2)
17    insert(a,n);
18  if(i==3)
19    bubble(a,n);  
20  write_data(a,n); 
21 }
22 
23 void read_data(int a[],int n)
24 {int i=0;
25 
26  printf("请输入元素:");
27  for(;i<n;i++)
28      scanf("%d",&a[i]);
29 }
30 
31 void comp(int a[],int n)
32 { int i,j,t;
33  for(i=0;i<(n-1);i++)
34  for(j=i+1;j<n;j++)
35     if(a[i]>a[j])
36       {t=a[i];
37        a[i]=a[j];
38        a[j]=t;   
39       }
40 }
41 
42 void insert(int a[],int n)
43 {int i=1,j=0,k,t;
44  for(;i<n;i++)
45   {for(j=0;j<i;j++)
46       if(a[i]<a[j])
47         {
48          t=a[i];
49          for(k=i;k>j;k--)
50             a[k]=a[k-1];
51          a[j]=t;
52         }
53   }
54 }
55 
56 void bubble(int a[],int n)
57 {int i,j,t;
58  for(i=0;i<n;i++)
59     for(j=0;j<(n-1);j++)
60        if(a[j]>a[j+1])
61          {t=a[j+1];
62          a[j+1]=a[j];
63           a[j]=t;   
64          }
65 }
66 
67 void write_data(int a[],int n)
68 {int i=0;
69  for(;i<n;i++)   
70     printf("%d\n",a[i]);
71 }


对于选择法排序,就是固定一个元素,然后与其他元素依次比较,把大的(或小的)放后面,一次循环下来,最小(大)的1个元素就到了第一位了;然后固定下一个元素,循环下来第二小(大)的元素就到第二位了;继续下去就排好了。
对于插入法排序,就是逐个把要插入的元素与已有的序列依次比较,按升序(或降序)把元素插进去,然后将原有序列的插入元素之后的元素依次后移一位,有多少要插入的元素就循环几次。
对于冒泡法排序,就是依次比较相邻的两个元素,进行排序,一次循环下来,最大的(或最小的)就到了最后;然后再次重新循环,把所有上次循环的赋值都初始化,最后就把第二大的数排在了倒数第二位了,依次下去。

三种排序方法(c语言)

标签:

原文地址:http://www.cnblogs.com/cjxy1993/p/4339007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!