数据结构 冒泡排序
来源:互联网 发布:怎样修改淘宝评价内容 编辑:程序博客网 时间:2024/06/01 10:16
Ⅰ )算法思想
冒泡排序是一种相对简单并且容易理解、容易实现的一种排序算法。其基本思想是:依次比较相邻的两个数,若想相邻的两个数逆序,则交换位置。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后(升序排列)。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。
然后进行第二次趟冒泡排序,对前n-1个记录进行同样的操作,其结果是使次大的记录放在第n-1个记录的位置上。
然后进行第三次趟冒泡排序,对前n-2个记录进行同样的操作,其结果是使第三大的记录放在第n-2 个记录的位置上。
如此反复,每一趟冒泡排序都将一个记录排到位,直到剩下一个最小的记录。
若在某一趟的冒泡排序过程中,没有发现一个逆序,则可直接结束整个排序过程,所以冒泡排序最多进行n-1 趟比较。
Ⅱ)源代码
//冒泡排序 #include<stdio.h>#define MaxSize 50 typedef struct{ int key;}RecordType; //记录方式 typedef struct{ int length; RecordType r[MaxSize+1]; //记录表}RecordList; void BubbleSort(RecordList *l,int length) //冒泡排序{ int x; //定义中间变量 for (int i = 0; i <=l->length - 1; i++) { for (int j = 0; j <=l->length - 1 - i; j++) //由于定义了一个RecordList *l,所以使用->表所属 { if (l->r[j].key >l->r[j + 1].key) { x = l->r[j].key; //交换顺序 l->r[j].key = l->r[j + 1].key; l->r[j + 1].key = x; } } }} int main(void){ RecordList l = { 10, 0, 4,5, 1, 9, 6, 8, 0, 3, 7, 2 }; BubbleSort(&l, 10); for (int i = 1; i <= 10; i++) //循环输出结果 { printf("%d\t", l.r[i].key); } printf("\n"); return 0;}
阅读全文
0 0
- 冒泡排序 C数据结构
- 数据结构之冒泡排序
- 数据结构之冒泡排序
- 【数据结构】冒泡排序
- 数据结构-冒泡排序算法
- 数据结构_冒泡排序
- C++数据结构--冒泡排序
- 数据结构 - 冒泡排序
- 数据结构--冒泡、快速排序
- 数据结构之冒泡排序
- [数据结构]冒泡排序
- 数据结构-冒泡排序
- 数据结构冒泡排序
- 数据结构冒泡排序
- 数据结构JAVA--冒泡排序
- 数据结构-冒泡排序
- 数据结构_冒泡排序
- 夕拾-数据结构-冒泡排序
- unity ios打包提示Apple Mach-O Linker (Id) Errors
- JavaScript学习第一天
- spring整合RMI实现Java远程方法调用
- 数据库测试
- 【洛谷 1218】[USACO1.5]特殊的质数肋骨 Superprime Rib
- 数据结构 冒泡排序
- 什么是内存泄漏?野指针?悬挂指针?空指针异常?
- java 开始学习,输入Welcome to java
- IDEA忽略文件不提交git
- Spring框架、依赖注入、控制反转详解及代码说明
- 转:《在Unity中使用代码类来管理多个Panel(面板)之间的切换》
- 最长公共子序列
- python初体验--linux下下载python工具包
- 聊一位倾慕已久的他