冒泡排序(Bubble_Sort)
来源:互联网 发布:php cookies管理系统 编辑:程序博客网 时间:2024/05/18 00:10
冒泡排序算法是一个耳熟能详的算法,在我们学习计算机的专业课的时候,在课本中经常会见到该程序,作为一个非常简单的例子程序。如果你不能默写该算法,那么你就没学过计算机的相关课程。好了,不说闲话了。
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。
//冒泡排序(小数上升,大数下沉)#include<stdio.h>typedef int Status;#define TRUE 1#define FALSE 0//将a中整数序列重新排列成自小到大的有序的整数序列void bubble_sort(int a[],int n){int i,j,t;<span style="color:#ff0000;">Status change;</span>for(i=n-1,change=TRUE;i>=1 && change;--i)//外循环{<span style="color:#ff0000;">change=FALSE;//设置change的作用是,当该序列提前有序的时候,就不用再往下进行比较了,该序列已经是有序的了</span>for(j=0;j<i;j++)//内层循环{if(a[j] > a[j+1]) //前一个比后一个大,要往后移动{t=a[j];a[j]=a[j+1];a[j+1]=t;<span style="color:#ff0000;">change=TRUE;//当一趟比较之后,如果有元素的交换就把change设置为TRUE</span>}}}}//打印整数序列void print(int r[],int n){int i;for(i=0;i<n;i++){printf("%d ",r[i]);}printf("\n");}#define N 8void main(){int d[N]={49,38,65,97,76,12,27,49};printf("排序前:\n");print(d,N);bubble_sort(d,N);printf("排序后:\n");print(d,N);}
(1)注意看该程序,有一点小小的优化,就是添加了一个标志change,就是在内层的循环一趟比较之后,如果没有发生元素的交换就说明该序列已经是有序的了,就没有必要再进行外层循环了。
(2)冒泡排序原理图:
(3)程序运行结果:
0 0
- 冒泡排序(Bubble_Sort)
- 冒泡排序(bubble_sort)详解
- 冒泡排序(Bubble_Sort)
- 一天一排序之“冒泡排序(Bubble_sort)”
- 自己完成一个冒泡排序(bubble_sort),可以完成不同类型数据的排序
- 实现bubble_sort<冒泡法>
- 排序算法之冒泡排序<Bubble_Sort>及其C语言代码实现
- 自己实现一个bubble_sort(冒泡排序),可以完成不同类型数据的排序
- 使用数组和指针的形式实现冒泡排序,并优化。bubble_sort();
- 排序算法的时间复杂度比较(quick_sort;bubble_sort)
- bubble_sort
- bubble_sort
- bubble_sort
- Bubble_sort
- bubble_sort
- Bubble_sort
- BUBBLE_SORT
- 冒泡排序(包括局部冒泡排序)
- 自定义组合控件
- 微信中长按弹出菜单(2)实现了功能
- 在Java程序中打log
- ajax
- 学习笔记之重写原型
- 冒泡排序(Bubble_Sort)
- yii2 strace 追踪正在执行的进程
- 二十三种设计模式
- 安卓Android多阶段进度条progress bar附带动画效果
- Codevs_P3037 线段覆盖 5(DP+二分)
- static
- 发现一个不错的网站,记下来http://blog.coderzh.com/
- 博客开篇
- RabbitMQ消息队列在PHP下的应用