三种常见的排序算法
来源:互联网 发布:淘宝店铺点击图片链接 编辑:程序博客网 时间:2024/06/04 17:51
刚开始的时候也听过学长说什么什么排序之类的,到刚听得时候是各种姿势懵逼啊,学习了一段时间的c语言之后,才有点明白所谓的排序是什么,现在就来罗列一下三种常用的排序法冒泡排序法,插入排序法和选择排序法。
冒泡排序
冒泡排序啊,这是我听过最多的一个排序方法了,他的基本思想也比较简单,就是不断比较相邻的两个数,让较小的元素不断地往后移。经过一轮比较,就选出最小的数(降续),然后放在这次排列的最后一位;然后在进行下一次的重复动作,不过不动上次已经放好的数,减少一次比较,再找出这一轮最小的数,放在这一轮的最后面,然后依次循环,这就得到一个降续的排列了。
#include <stdio.h>#define numb 20 int main(){int num[numb],i,j,t;for (i = 0; i < numb; ++i) num[i] = rand(); for ( i = 0; i <numb-1; ++i){ for (j= 0; j< numb-1-i; ++j) { if(num[j]<num[j+1]) { t=num[j]; num[j]=num[j+1]; num[j+1]=t; } }} for ( i = 0; i < numb; ++i) { printf("%d\n",num[i]);/* code */ } return 0;}
这是一个示例输出
插入排序法
插入排序法是一种非常快速的排序算法,且原理简单,结构紧凑。它的是原理:从序列中第二个数A开始,将A,插入前面已经排好的序列中,形成一个新的排序好的序列,以此类推到最后一个元素。
#include <stdio.h>#define N 7int main(){int a[N]={1,4,5,8,7,2,9};int i,t,p;for (i =1; i < N; ++i){ t=a[i]; p=i-1; while(p>=0 && t<a[p]) { a[p+1]=a[p]; p--; } a[p+1]=t;} for ( i = 0; i < N; ++i) { printf("%d\n",a[i]);/* code */ }}
图来了,
选择排序法
选择排序法也可以看做冒泡的一个改进,经过一轮的两两比较后,并不马上交换数的位置,而是找到本轮最小的数,记下该数的位置(即在数组中的下标),待本轮比较完毕后,通过一次交换即可将本轮最小的数交换到位。然后就找到把数字排好了。
#include <stdio.h>#define N 10 int main(){int a[N]={1,23,34,55,4,6,9,45,98,5},i,j,k,temp;for(i=0;i<9;i++){ k=i; for(j=k+1;j<10;j++) { if(a[k]<a[j]) k=j; } temp=a[i]; a[i]=a[k]; a[k]=temp;} for ( i = 0; i < N; ++i) { printf("%d\n",a[i]);/* code */ }}
附图
阅读全文
0 1
- 三种常见的排序算法
- Java三种常见的排序算法:冒泡,选择,插入
- 几种常见的排序算法及实现(三)
- java常见三种排序算法
- 【Data_Structure笔记3】排序算法之插入排序常见的三种算法
- 常见排序算法的实现(三)——堆排序
- 常见的三种排序算法(堆排、快排、归并排序)的比较总结
- 几种常见的排序算法及其时间复杂度——选择排序(三)
- 常见排序算法 (三)-选择排序
- 三种常见排序
- 常见的排序算法
- 常见的排序算法
- 常见的排序算法
- 常见的排序算法
- 常见的排序算法
- 常见的排序算法
- 常见的排序算法
- 常见的排序算法
- Java递归之遍历及删除文件夹文件
- fatal error C1083:/fatal error C1010: 错误处理
- 机器学习中的数学(4)——特征值与奇异值分解及其应用
- django(三)---Template(2)
- css垂直水平居中方法
- 三种常见的排序算法
- QT子窗口收到父窗口发来的信号
- Oracle里面的用户user无法登录 LOCKED(TIMED)
- 68.文本格式化
- Winccflexable触摸屏的报警
- 用face_recognition写一个简单的人脸识别分类的程序
- 数据结构常用技巧
- 【PDF下载】双11技术峰会之揭秘阿里虚拟互动实验室
- D09 MapReduce程序运行过程原理