排序算法
基本排序
GeeksforGeeks
没有什么比技术更好的认证
展开
-
基数排序
1、桶排序(Bucket Sort) 1.1 算法描述 输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排。 设置一个定量的数组当作空桶; 遍历输入数据,并且把数据一个一个放到对应的桶里去; 对每个不是空的桶进行排序; 从不是空的桶里把排好序的数据拼接起来 1.2 图片演示 1.3 代码实现 ...原创 2019-10-10 07:46:13 · 88 阅读 · 0 评论 -
计数排序
1、计数排序(Counting Sort) 1.1 算法描述 计数排序不是基于比较的排序算法。 找出待排序的数组中最大和最小的元素; 统计数组中每个值为i的元素出现的次数,存入数组arr的第i项; 对所有的计数累加(从arr中的第一个元素开始,每一项和前一项相加); 反向填充目标数组:将每个元素i放在新数组的第arr(i)项,每放一个元素就将arr(i)减去1。 1.2 动画演示 1.3 代...原创 2019-10-09 12:53:58 · 78 阅读 · 0 评论 -
选择排序
1、选择排序(Selection Sort) 1.1 算法描述 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 1.2 动画演示 1.3 代码实现 package sort; //平均时间复杂度:O(n²) 最好:O(n²) 最坏:O(n²) 空间复杂度:O(1) ...原创 2019-10-08 17:12:59 · 76 阅读 · 0 评论 -
归并排序
1、归并排序(Merge Sort) 归并排序:采用分治法,将两个或两个以上的有序表合并成一个新的有序表,即把带排序的序列分成若干个子序列,每个子序列有序,然后再把有序子序列合并为整体有序列。 1.1 算法描述 把长度为n的输入序列分成两个长度为n/2的子序列; 对这两个子序列分别采用归并排序; 将两个排序好的子序列合并成一个最终的排序序列。 1.2 动图演示 1.3 代码实现 packag...原创 2019-10-08 16:54:02 · 99 阅读 · 0 评论 -
插入排序
1、插入排序(Insertion Sort) 1.1 算法描述 从第一个元素开始,该元素可以认为已经被排序; 取出下一个元素,在已经排序的元素序列中从后向前扫描; 如果该元素(已排序)大于新元素,将该元素移到下一位置; 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置; 将新元素插入到该位置后; 重复步骤2~5。 1.2 动图演示 1.3 代码实现 package sort; //...原创 2019-10-08 16:46:11 · 94 阅读 · 0 评论 -
交换排序
1、冒泡排序(Bubble Sort) 1.1 算法描述 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3,直到排序完成。 1.2 动图演示 1.3 代码实现 package sort; //平均时间复杂度:O(n²) 最好:O...原创 2019-10-08 15:46:15 · 90 阅读 · 0 评论