冒泡排序
两两比力,大的放后面。
每比力一轮,纪录交换的次数。当交换的次数为零时,则表示排序完成。
- char a[10]={9,5,1,2,4,7,6,8,3,0};
- 9大于5 交换 5 9 1 2 4 7 6 8 3 0
- 9大于1 交换 5 1 9 2 4 7 6 8 3 0
- 9大于2 交换 5 1 2 9 4 7 6 8 3 0
- 9大于4 交换 5 1 2 4 9 7 6 8 3 0
- 9大于7 交换 5 1 2 4 7 9 6 8 3 0
- 9大于6 交换 5 1 2 4 7 6 9 8 3 0
- 9大于8 交换 5 1 2 4 7 6 8 9 3 0
- 9大于3 交换 5 1 2 4 7 6 8 3 9 0
- 9大于0 交换 5 1 2 4 7 6 8 3 0 9
- 交换次数 9
- 5大于1 交换 1 5 2 4 7 6 8 3 0 9
- 5大于2 交换 1 2 5 4 7 6 8 3 0 9
- 5大于4 交换 1 2 4 5 7 6 8 3 0 9
- 5小于7 不动 1 2 4 5 7 6 8 3 0 9
- 7大于6 交换 1 2 4 5 6 7 8 3 0 9
- 7小于8 不动 1 2 4 5 6 7 8 3 0 9
- 8大于3 交换 1 2 4 5 6 7 3 8 0 9
- 8大于0 交换 1 2 4 5 6 7 3 0 8 9
- 8小于9 不动 1 2 4 5 6 7 3 0 8 9
- 交换次数 6
- 1小于2 不动 1 2 4 5 6 7 3 0 8 9
- 2小于4 不动 1 2 4 5 6 7 3 0 8 9
- 4小于5 不动 1 2 4 5 6 7 3 0 8 9
- 5小于6 不动 1 2 4 5 6 7 3 0 8 9
- 6小于7 不动 1 2 4 5 6 7 3 0 8 9
- 7大于3 交换 1 2 4 5 6 3 7 0 8 9
- 7大于0 交换 1 2 4 5 6 3 0 7 8 9
- 7小于8 不动 1 2 4 5 6 3 0 7 8 9
- 8小于9 不动 1 2 4 5 6 3 0 7 8 9
- 交换次数 2
- ....
- ..
- ....
- 0小于1 不动 0 1 2 3 4 5 6 7 8 9
- 1小于2 不动 0 1 2 3 4 5 6 7 8 9
- 2小于3 不动 0 1 2 3 4 5 6 7 8 9
- 3小于4 不动 0 1 2 3 4 5 6 7 8 9
- 4小于5 不动 0 1 2 3 4 5 6 7 8 9
- 5小于6 不动 0 1 2 3 4 5 6 7 8 9
- 6小于7 不动 0 1 2 3 4 5 6 7 8 9
- 7小于8 不动 0 1 2 3 4 5 6 7 8 9
- 8小于9 不动 0 1 2 3 4 5 6 7 8 9
- 交换次数 0
- 此时交换此时为零,排序完成。结果为0 1 2 3 4 5 6 7 8 9
复制代码 代码:
- #include <stdio.h>
- #include <string.h>
- char a[10]={9,5,1,2,4,7,6,8,3,0}; //要进行排序的数据
- char temp;//临时存放
- int num; //每循环交换次数
- char flag=1;//开始交换标志位
- int main()
- {
- while(flag)
- {
- for(char i=0;i<9;i++)
- {
- if(a[i]>a[i+1])
- {
- temp = a[i+1];
- a[i+1]=a[i];
- a[i]=temp;
- num++; //记录每次循环交换的次数
- }
- }
- //如果交换次数为零,说明交换完成
- //退出交换
- if(num==0)
- {
- flag = 0;
- }
- else //每次循环完成将num清零。
- {
- num=0;
- }
- }
- //打印最终的结果。
- for(char i=0;i<10;i++)
- {
- printf("%d\r\n",a[i]);
- }
- return 0;
- }
复制代码 选择排序
依次比力后面的数据,将数据小的放到前面。
- #include <stdio.h>
- #include <string.h>
- char a[10]={9,5,1,2,4,7,6,8,3,0}; //要进行排序的数据
- char i,j,n;
- char temp;
- int main()
- {
- char *p =&temp;
- //获取数据的个数
- n=sizeof(a)/sizeof(char);
- printf("n=%d\r\n",n);
- //进行交换
- for (i=0;i<n;i++)
- {
- j=i+1;
- for(j;j<n;j++)
- {
- if(a[i]>a[j])
- {
- temp=a[j];
- a[j]=a[i];
- a[i]=temp;
- }
- }
- }
-
- //打印最终的结果。
- for(char y=0;y<10;y++)
- {
- printf("%d\r\n",a[y]);
- }
- return 0;
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |