排序算法全解 -【C语言】
文章平均质量分 58
本栏目包括各种排序算法详细解读,配有过程图片,C语言代码,详细的注释
fuill
这个作者很懒,什么都没留下…
展开
-
【排序算法全解】之 - 快速排序(QuickSort)
1.算法原理每趟排序,先选取一个基准值key,把值小于key的元素都交换到key左边,大于key的元素都交换到右边然后再分别对key值左右两边的元素进行快速排序当序列元素小于等于2个时完成排序(若这时选取基准值,那么基准值左右两边待排序序列元素个数为1)例如对数组 [ 3,5,4,1,6,2 ] 的快速排序过程如下而每趟排序过程可以用左右指针法或者用挖坑法,挖坑法比较于左右指针法,可以少用一个中间变量,并减少元素交换次数,速度更快本篇介绍的是 “挖坑” 法...原创 2022-03-27 21:02:39 · 3313 阅读 · 0 评论 -
【排序算法全解】之 - 插入排序(InsertSort)
1.算法原理把第一个元素当成有序序列,然后把待排序序列的第一个值插入到有序序列中下图蓝色方框里就是有序序列2.分析过程和代码实现2.1.排序趟数由于是从第二个元素开始插入到有序序列,因此排序趟数为 n-12.2.每趟排序过程每趟排序取待排序序列的第一个元素 ,从后向前依次与有序序列的值进行比较,若小于有序序列的值,则交换该两者交换,当有序序列的值小于该元素时,完成插入例如排序数组 [5,2,3,4,1] 的过程如下图按上述算法所编写的代码...原创 2022-03-24 19:34:51 · 3433 阅读 · 1 评论 -
【排序算法全解】之 - 选择排序(SelectSort)
算法原理一次遍历中找出数组中最大的值,放在待排序序列的最后排序趟数当待排序序列只有一个元素时,排序完成因此需排序 n-1 趟每趟排序的区间第 i 趟排序时,待排序序列区间为 [0,n-i]算法测试代码#include<stdio.h>void prin(int t[],int n){ for(int i=0; i<n; i++) printf("%d ",t[i]); printf("\n");}//选择排序void SelectS原创 2022-03-20 19:40:51 · 719 阅读 · 0 评论 -
【排序算法全解】之 - 冒泡排序(BubbleSort)
冒泡排序是一种较为简单的排序算法,原理是依次比较相邻的两个数,把大的数放在后面,这样一趟排序完成后,数组中最大的数就排到了最后面,想冒气泡一样。我们详细分析一下过程设数组t的长度为n第一趟排序:最大的数排到倒数第一个位置,下标是n-1第二趟排序:第二大的数排到倒数第二个位置,下标是n-2第三趟排序:第二大的数排到倒数第三个位置,下标是n-3这样第n-1趟排序时,下标为n-(n-1)=1的数是排好了的,也就是数组已经排序完成而每趟排序我们也来分析一下一,比较 t[0] 和 t[1] 的原创 2022-03-20 14:28:17 · 1426 阅读 · 0 评论