冒泡排序与选择拍序
来源:互联网 发布:课程顾问 知乎 编辑:程序博客网 时间:2024/05/23 00:06
写这篇博客纯粹为了更好的掌握知识!
冒泡排序是相邻的两个数进行比较,如果是升序排列就是把大的往后靠,这种算法思路很简单,但是有一些细节需要注意,线上代码吧:
- #include <stdio.h>
- int main(void)
- {
- int a[10] = {10,10,2,35,48,92,6,7,8,2};
- int temp = 0,i,j;
- //控制比较的次数(十个数实质上只需要将九个排出来,答案就出来了)
- for(i=0;i<9;i++)
- {
- //每一个数比较的轮数
- for(j=0;j<10-i-1;j++)
- {
- //前大于后 >升序 <降序
- if(a[j]>a[j+1])
- {
- temp = a[j];
- a[j] = a[j+1];
- a[j+1]=temp;
- }
- }
- }
- for(int i=0;i<10;i++)
- {
- printf("a[%d]=%d\n",i,a[i]);
- }
- return 0;
- }
选择排序与冒泡排序略有不同:比如书十个数字排序,它先找出十个数中最大的,然后放在第一位,然后再找后面九个数最大的,放在第二位,依次这样进行,上代码:
- #include <stdio.h>
- int main(void)
- {
- int a[10] = {100,3,23,9,108,56,1,24,52,0};
- /*
- 1.先假定第一个数是最小的数,然后开始循环
- 从前往后取比较,找到最小的数,然后他们交换。
- */
- int i,j,temp,min;
- for(i=0;i<9;i++)//次数 (这里同冒泡排序一样,不需要把第十个数也拿来比较)
- {
- //轮数 每次选择假定最小的数
- min = i;
- for(j=i+1;j<10;j++)
- {
- if(a[min]>a[j])
- {
- temp = a[i];
- /*把内层循环中找到,最小值交换给
- a[i];*/
- a[i] = a[j];
- a[j] = temp;
- }
- }
- }
- for(int i=0;i<10;i++)
- {
- printf("%d\n",a[i]);
- }
- return 0;
- }
0 0
- 冒泡排序与选择拍序
- 冒泡与选择排序
- 排序 冒泡与选择
- 冒泡与选择排序
- 冒泡排序与选择排序
- 选择排序与冒泡排序
- 选择排序与冒泡排序
- 选择排序与冒泡排序
- 冒泡排序与选择排序
- 冒泡排序与选择排序
- 选择排序与冒泡排序
- 冒泡排序与选择排序
- 冒泡排序与选择排序
- 选择排序与冒泡排序
- 选择排序与冒泡排序
- 选择排序与冒泡排序
- 选择排序与冒泡排序
- 选择排序与冒泡排序
- 日志统计redis和mongo对比
- 面试题27:二叉搜索树与双向链表
- 【标题】:密文搜索
- 最安全的单例模式--java使用内部类实现单例模式
- mongodb的一些经验值
- 冒泡排序与选择拍序
- Jpush之如何利用HttpClient实现消息推送到手机
- 一般导入的包有问题
- Vue搭配mint-ui
- 使用caffe训练好的模型测试单张手写数字
- 单片机==LCD1602之简易万年历
- shader数学基础之顶点法向量从物体坐标系变换到世界坐标系
- Slot容量不足情况下提交Topo会发生什么
- 关于flux