冒泡排序的程序如下:
1 #include <stdio.h>
2 int main()
3 {
4 int a[10] = {10,9,8,7,6,5,4,3,2,1};
5 int len = sizeof(a) / sizeof(int);
6
7 int i,j;
8 for(i = 0;i < len-1;i++)
9 {
10 for(j = 0;j < len-i-1;j++)
11 {
12 if (a[j] > a[j+1])
13 {
14 int temp = a[j];
15 a[j] = a[j+1];
16 a[j+1] = temp;
17 }
18 }
19 for(j = 0;j < 10;j++)
20 {
21 printf("%d ",a[j]);
22 }
23 printf("\n");
24
25 }
26 return 0;
27 }
冒泡排序的原理是:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个元素。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
选择排序的程序如下:
#include <stdio.h>
2
3 int main()
4 {
5 int a[10]={10,9,8,7,6,5,4,3,2,1};
6 int len = sizeof(a) / sizeof(int);
7
8 int i,j;
9 int min;
10
11 for(i = 0;i < len ;i++)
12 {
13 min = i;
14 for(j = i + 1;j < len;j++)
15 {
16 if (a[j] < a[min])
17 {
18 min = j;
19 }
20 }
21 int t;
22 t = a[i];
23 a[i] = a[min];
24 a[min] = t;
25 if(i >= len / 2)
26 {
27 break;
28 }
29
30 for(j =0;j < 10;j++)
31 {
32 printf(" %d",a[j]);
33 }
34 printf("\n");
35 }
36
37
38
39 return 0;
40 }
选择排序的原理是:
1.在数组的所有元素中挑选出一个最小的元素,将它与排在无序位第一个的元素交换。
2.在挑选出最小的元素并放在第一位以后,继续对剩下的元素进行挑选,挑选出除了第一位之外最小的元素。
3.重复1的操作,直到所有的元素按顺序排好,打印出所有结果。
1 for(i = 0;i < len ;i++)
2 {
3 min = i;
4 for(j = i + 1;j < len;j++)
5 {
6 if (a[j] < a[min])
7 {
8 min = j;
9 }
这一部分主要是对数组下标进行判断,一开始i=0,也就是认为a[0] = a[min]。下一步进行判断,由于j=i+1,a【j】即代表a【i】的下一位,如果a【j】<a【min】,这时候就认为a【min】=a【j】,重复此操作,直到挑选出最小的那个元素,在本题中最小的元素即为1。
挑选出最小的元素后,如果a【i】=a【min】,则无需互换,如果a【i】!=a【min】,则将a【i】和a【min】互换位置,也就是执行下面的程序:
if(min != i)
{
int t;
t = a[i];
a[i] = a[min];
a[min] = t;
}
重复上述步骤,直到按顺序排好,打印出所有过程。