前言
兜兜转转,一晃年关将至。时间证明了一个道理,学啥忘啥,学的越快忘得越快,还不如踏踏实实写点笔记心得来的实在。
编程初学期间,排序算法是让人抓头最多的一块。为什么我连最简单的冒泡排序都理解不了,我是不是不选错专业了,很多人会有这样的疑问,然后就有人做gif冒泡懵逼排序,别说,还挺形象的。
其实排序算法这块,着急不得,这个排序算法不会就换一个排序算法来学,总有一种排序算法你能够理解的,等需要用到排序的时候,你只要会一种就可以了。
在这里我列举了7中常见的排序算法并用C语言实现,你们可能就要问了,不是十种吗?怎么还能缺斤短两,不是我不会写啊,是写起来麻烦,你们也用不到后面那几种,跟别说去研究了,能看懂常见的七种排序算法你就能在学校里横着走了。
后台回复【排序算法】可以拿到全部代码
目录
一、冒泡排序 二、选择排序 三、插入排序 四、快速排序 五、希尔排序 六、归并排序 七、桶(基数)排序01 冒泡排序相信大家最熟悉的就是冒泡排序了,这个我就不多说
直接上动图演示原理,外加代码实现冒泡排序:
C语言代码实现:
void BubbleSort(int arr[], int n){
//从小到大排序 相邻来两个数比较,将大的数字往后放 for (int i = 0; i < n - 1; i++) //n-1是因为数组下标最大为n-1 要进行10轮比较 {
//n-1是因为数组下标最大为n-1 要进行10次比较,再减i是因为每最后的i个元素已经有序不需要继续排序 for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) //两两比较,将小的数据放前面 {
swap(arr, j + 1, j); //交换arr数组arr[j+1]和arr[j]的值 } } }}//交换函数后面就不列举了,凡是swap都是下面代码实现的void swap(int arr[], int x, int y){
int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp;}
02选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,再从剩余未