插入、冒泡、直接选择排序算法 博客分类: 常见排序算法
插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。(打牌算法)
冒泡排序:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。(落井下石)
直接选择排序:(Straight Select Sorting) 也是一种简单的排序方法,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列·比冒泡排序减少了移动次数
二分法插入排序
二分法插入排序是在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。二分法没有排序,只有查找。所以当找到要插入的位置时。移动必须从最后一个记录开始,向后移动一位,再移动倒数第2位,直到要插入的位置的记录移后一位。
注意:前i个元素是有序的
基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。
第二步
第三步
上一篇: 奇数阶幻方(幻方)
推荐阅读
-
插入、冒泡、直接选择排序算法 博客分类: 常见排序算法
-
排序算法 博客分类: Algorithm 算法java排序冒泡选择
-
简单排序算法之插入排序、选择排序和冒泡排序
-
【Java学习笔记】排序算法:冒泡排序、快速排序、选择排序、插入排序算法思想及其Java代码实现
-
冒泡,选择,插入排序 博客分类: ruby J#RubyF#CC++
-
冒泡,选择,插入排序 博客分类: ruby J#RubyF#CC++
-
冒泡法排序原理 博客分类: java编程 java算法冒泡排序
-
冒泡法排序原理 博客分类: java编程 java算法冒泡排序
-
Java实现的各种排序算法(插入排序、选择排序算法、冒泡排序算法)
-
Java实现的各种排序算法(插入排序、选择排序算法、冒泡排序算法)