随笔分类 -  Java排序算法汇总

摘要:【原理】 1.选择一个步长序列T1,T2,T3...,Tk,满足Ti>Tj(i<j),Tk=1。(步长:即每次插入排序的步长) 2.按步长序列的个数K,对待排序序列进行K趟排序。 3.每趟排序,根据对应的步长Ti,对待排序列分割成Ti个子序列,分别对子序列进行插入排序。 【用例】 待排列数组 [ 2 阅读全文
posted @ 2016-07-29 00:48 HigginCui 阅读(276) 评论(1) 推荐(0)
摘要:【原理】 整个过程其实只需三步: 1.在一列数组中,选择其中一个数据作为“基准”。 2.所有小于“基准”的数据,都移到“基准”的左边,所有大于“基准”的数据,都移到“基准”的右边。 3.对于“基准”左边和右边的两个子集,不断重复第一步和第二步。直到所有的数据子集只剩下一个数据为止。 【用例】 现有一 阅读全文
posted @ 2016-07-28 01:15 HigginCui 阅读(195) 评论(0) 推荐(0)
摘要:【基本原理】 对于给定的一组数据(假设有n个数据),首先将每两个相邻长度为1的子序列进行归并,得到n/2个长度为2或者1的有序子序列,再将其两两合并,反复此过程,得到一个有序序列。 【代码】 阅读全文
posted @ 2016-07-27 01:24 HigginCui 阅读(163) 评论(0) 推荐(0)
摘要:【基本原理】 顾名思义就是整个过程向气泡一样往上升,单向冒泡排序的基本原理就是: 对于给定的n个数据,从第一个数据开始一次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行一轮比较和换位后,n个记录中最大的那个被排在最后,即第n位。 然后对前面n-1个记录进行第二次比较,重复该过 阅读全文
posted @ 2016-07-26 22:57 HigginCui 阅读(178) 评论(0) 推荐(0)
摘要:【基本原理】 直接插入法思想: 1.在原始数据中,将第一个数据作为已排序的数据序列 2.从数组中获取下一个元素,在已经排序好的元素中从后向前扫描,并判断该元素与已排列好的的大小 3.若排序序列的元素大于新元素,则将该元素移到下一位置 4.重复步骤三,直到找到已排序的元素小于或者等于行元素的位置 5. 阅读全文
posted @ 2016-07-25 00:48 HigginCui 阅读(198) 评论(0) 推荐(0)
摘要:【基本原理】 对于给定的一组数据,经过第一轮比较后得到最小的数据,然后将该数据与第一个数据的位置进行交换; 然后对不包括第一个数据以外的其它数据进行第二轮比较,得到最小的数据并与第二个数据进行位置交换; 重复该过程,直到进行比较的数据只有一个时为止。 【举例】 待排序数组 【38,65,97,76, 阅读全文
posted @ 2016-07-24 23:55 HigginCui 阅读(408) 评论(0) 推荐(0)