数据结构之排序_1
来源:互联网 发布:企业成本核算软件 编辑:程序博客网 时间:2024/05/17 09:20
一、冒泡排序法
用通俗的话来阐述一下基本思想:
第一趟从数组的第一个元素开始到第n个元素为止,对n-1对相邻的两个记录进行两两比较,如果前者比后者大,则两者交换。这样,经过一趟的比较、交换后,最大的元素就移到了第n个位置。
第二趟从第一个元素开始到第n-1个元素为止,经过同样的比较交换使次大的元素移到第n-1个位置。
.............
如此重复,从第一个元素到最后一个元素就从小打大地排列了。
之所以叫冒泡排序,是假设最大的元素像最轻的气泡一样,最先浮上来(到达第n个位置),较重的气泡后些冒上来。。。
判断排序过程结束标志:一次交换都没有发生。
大致代码如下:
/* 冒泡排序法 */#include<stdio.h>void bubblesort(int a[],int n); //声明函数 int main(){int a[10]={12,89,45,67,49,53,84,11,97,5};bubblesort(a,10);return 0;} void bubblesort(int a[],int n) /*a[n]是一个包含n个无序元素的整型数组 */{int i,j,flag,temp,count=0; //flag=0表示没有发生交换,用于判断整个数组是否已经有序//count用来计算总共的趟数 for(i=0;i<n-1;i++) //进行n-1趟排序{flag=0; //先假设没有发生交换for(j=0;j<n-1-i;j++){if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;flag=1; //因为发生了一次交换所以置flag=1; }} /***********为了显示每趟结束之后的排序情况***************/count++;printf("第%d趟: ",count); for(j=0;j<n;j++){printf("%3d",a[j]);}if(flag) printf("\n"); /*******************************************************/if(!flag) break; //本趟比较中没发生交换则表示排序过程已经结束,即跳出循环。 }}以下是程序的执行结果:
end
1 0
- 数据结构之排序_1
- 【算法和数据结构】_1_排序算法_1
- 算法设计和数据结构学习_1(常见排序算法思想)
- 算法设计和数据结构学习_1(一道堆排序作业题)
- 排序_1.冒泡排序
- 数据结构入门_1
- 《数据结构--排序》之插入排序
- 《数据结构--排序》之快速排序
- 《数据结构--排序》之选择排序
- 《数据结构--排序》之归并排序
- 数据结构排序之堆排序
- 数据结构之排序--归并排序
- 数据结构排序之冒泡排序
- 数据结构排序之快速排序
- 数据结构排序之快速排序
- 数据结构排序之桶排序
- 数据结构--排序之插入排序
- 数据结构--排序之希尔排序
- 多python随机数函数的分析
- 天池大数据竞赛——UI特征统计
- 注意:C语言中没有指定同一运算符的多个操作数或者某函数各个参数的求值顺序,如果代码的执行结果和求值顺序有关,都是不好的程序设计风格。
- nyoj-1055-小鱼儿的难题
- Activity跳转Flag详解
- 数据结构之排序_1
- yayaxueyu
- C++11新特性(原封不动转载待查)
- 第22题
- 斜率优化DP以及本人对原作的补充遐想
- iOS-XML解析之-GDataXMLNode
- Android Event事件流分析
- 生活小常识:增发防脱发
- 我的文章