冒泡、插入、选择排序
来源:互联网 发布:手机关闭淘宝店铺 编辑:程序博客网 时间:2024/05/21 06:17
什么是冒泡法排序?
就是一种简单的交换排序算法,例如对于身高178 175 173 165 179这五个数进行升序排列,详细步骤如下:
- 首先看前两个数组成的数组对【178,175】。由于要进行升序排列,后面的值不能小于前面的值,因此这两个数要进行交换。
即:175<—>178 173 165 179 - 接下来第2、第3个数组成的数组对【178,173】也做同样交换。
即:175 173<—>178 165 179 - 同样第4、5也做交换。
即:175 173 165<—>178 179 - 最后一组【178,179】由于是升序,因此不用进行交换。
在以上步骤中,最后进行交换的一组数组对是【第3、4】。第4个数以后的数值,都已排序完毕。
第二轮,对未排序的第1-第3个数进行同样操作。即:
175 173 165 178 179
173<—>175 165 178 179
173 165<—>175 178 179
这样一来,前3个数的最大值就被移到了最后。
第三轮,以相同的方式对前2个数进行排序。即:
173 165 175 178 179
165<—>173 175 178 179
这样,第2个数以后的元素都按升序排列了。
至此,最小的元素已经排在了最前面,整个排序过程完成。
冒泡法C代码如下:
/*将5名学生的“身高”安升序排列*/#include<stdio.h>#define number 5 //学生人数/*交换x,y指向的整数值*/void swap(int *x,int *y){ int temp = *x; *x = *y; *y = temp;}/*冒泡法*/void bubble(int a[],int n){ int i,j; for(i = 0; i<n-1; i++) { for(j=1; j<=n-1; j++) if(a[j-1] > a[j]) swap(&a[j-1], &a[j]); }}int main(){ int i; int height[] = {178,175,173,165,179}; bubble(height,number); for(i = 0; i<number; i++) printf("%2d:%4d\n",i+1,height[i]); return 0;}
插入排序C代码
void insertion(int a[],int n){ int i,j; for(i=1; i<n; i++) { int tmp = a[i]; for(j=i; j>0 && a[j-1]>tmp; j--) a[j]=a[j-1]; a[j]=tmp; }}
选择排序C代码
void selection(int a[],int n){ int i,j; for(i=0; i<n-1; i++) { int min=i; for(j=i+1; j<n; j++) if(a[j] < a[min]) min = j; swap(&a[min],&a[i]) }}
阅读全文
1 0
- 冒泡选择插入排序
- 冒泡、选择、插入排序
- 选择、插入、冒泡排序
- 冒泡、插入、选择排序
- 选择、插入、冒泡排序
- 冒泡、选择、插入排序
- 选择、冒泡、插入-排序
- 插入 选择 冒泡 排序
- 选择、冒泡、插入排序
- 冒泡、选择、插入排序
- 冒泡,插入,选择排序
- 冒泡,选择,插入排序
- 冒泡、插入、选择排序
- 冒泡,插入,选择排序
- 冒泡,选择,插入排序
- 冒泡,选择,插入排序
- 冒泡选择插入排序算法
- 基本排序:选择 插入 冒泡
- codeforces 438D The Child and Sequence(线段树:单点更新+区间取模+区间和)
- refresh的停车场
- 使用Navicat for Oracle工具连接oracle的图文教程
- hdu 4960 Another OCD Patient(DP)
- POJ 1125 Stockbroker Grapevine (Floyd)
- 冒泡、插入、选择排序
- Linux Rsync 远程同步工具
- hdu 6070 Dirt Ratio
- Codeforces 687C The Values You Can Make DP
- KMP算法详解
- 17 多校
- JAVA环境变量关于
- python+flask+sqlite3完成的小型博客留言板
- STM32使用ADC+电位器测电压