冒泡排序法、选择排序法和插入排序法的排序过程
来源:互联网 发布:软件怎么下载 编辑:程序博客网 时间:2024/04/29 07:16
1. 冒泡排序法:n个数从小到大排序,经过n-1趟循环,每次循环中两两比较相邻两个数的大小,前者大于后者则将两数交换,直到最后一个,每次通过不断交换相邻两数将未排序中的最大的那个数交换到排序中的最前一位。
2. 选择排序法:n个数从小到大排序,先将第一个数认为最小的数,经过n-1趟循环,每次循环中将认为最小的数与下一个数比较,如果大于则交换这两数,直到最后一个,每次找出未排序中最小的值排在排序中的最后一位。
3. 插入排序法:将n个数看成n张扑克牌,默认手里拿到的第一张牌为最小值,接着每次拿起一张牌都与前面的第一张牌比较,大于则放在最后即可,小于则与前面的交换,继续跟前面的牌比较,直到大于前面的牌为止。
以上三种排序方法是简单常见,但是效率都很低的排序方法,高效的排序法有快速排序法等,以下程序仅在说明排序方法,重在容易理解,不重效率,实际运用时每种方法都有很大的优化空间。
/* 冒泡法排序 */void sort_1(int dat[],int n){int i,j;int temp;for(i=0;i<n-1;i++){for(j=0;j<n-1;j++){if(dat[j]>dat[j+1]){temp=dat[j];dat[j]=dat[j+1];dat[j+1]=temp;}}/* 以下{ }里内容只是为了打印出排序过程 */{int timer;printf("\n冒泡法排序第%d步结果:\t",i+1);for(timer=0;timer<n;timer++)printf("%3d ",dat[timer]);}}}
/* 选择法排序 */void sort_2(int dat[],int n){int i,j,min;int temp;for(i=0;i<n-1;i++){min=i;for(j=i+1;j<n;j++){if(dat[j]<dat[min])min=j;}if(min!=i){temp=dat[i];dat[i]=dat[min];dat[min]=temp;}/* 以下{ }里内容只是为了打印出排序过程 */{int timer;printf("\n选择法排序第%d步结果:\t",i+1);for(timer=0;timer<n;timer++)printf("%3d ",dat[timer]);}}}
/* 插入排序法 */void InsertSort(int dat[],int n){ int i,j;int temp;for(i=1;i<n;i++){temp=dat[i];for(j=i;j>0&&dat[j-1]>temp;j--){dat[j]=dat[j-1];}dat[j]=temp;/* 以下{ }里内容只是为了打印出排序过程 */{int timer;printf("\n插入法排序第%d步结果:\t",i+1);for(timer=0;timer<n;timer++)printf("%3d ",dat[timer]);}}}
#include <stdio.h>#include <stdlib.h>#define random(x) (rand()%(x))#define NUM_MAX10/* 主函数 */void main(void){int i;int buf[NUM_MAX];printf("\n原始数据:\t\t");for(i=0;i<NUM_MAX;i++){buf[i]=random(1000);printf("%3d ",buf[i]);}printf("\n");sort_3(buf,NUM_MAX);printf("\n\n排序后数据:\t\t");for(i=0;i<NUM_MAX;i++){printf("%3d ",buf[i]);}printf("\n");}运行结果如下:
0 0
- 冒泡排序法、选择排序法和插入排序法的排序过程
- 冒泡排序法和选择排序法的排序过程
- Java排序|冒泡法排序|插入排序|选择排序
- 排序:插入排序/选择排序/交换排序(冒泡法)
- php排序法--冒泡排序,选择排序,插入排序
- 介绍4个常用的排序法。冒泡排序、插入排序、快速排序、选择排序法
- 【java】冒泡排序法、选择排序法、插入排序法
- 冒泡排序 选择排序和插入排序
- 冒泡排序、插入排序和选择排序
- 冒泡排序和插入排序,选择排序
- Golang实现的通用快速排序法,冒泡排序法,插入排序法,选择排序法
- 简单的排序算法(插入排序法、冒泡排序法、选择排序法)
- 冒泡排序法和插入排序法
- 选择排序法和冒泡排序法
- 冒泡排序法和选择排序法
- 冒泡排序法和选择排序法
- 冒泡法排序和选择法排序
- 冒泡排序法和选择排序法
- JAVA接口
- Oracle用户解锁
- Android Sqlite+反射 实现CRUD
- bootstrap基础(一)文本,列表,代码,表格
- 机器学习3——决策树总结
- 冒泡排序法、选择排序法和插入排序法的排序过程
- Handler消息处理机制原理
- iOS 图片上传二
- 对象
- Java岗位面试题(南京才丰软件技术开发有限公司)
- 解决cron不能启动脚本的问题
- IOS网络访问之使用AFNetworking
- ASP.NET中RouteValueDictionary的一点理解
- 结构体数据的逆向练习