排序算法
星star~
略略略略略!!!
展开
-
【七、堆排序】
堆排序:1.先创建好大根堆2.每一趟将堆顶元素加入有序子序列【即将堆顶元素与待排序序列中的最后一个元素交换】3.将待排序元素序列再次调整为大根堆图解:书上代码是从i=1存储元素,相当于在i=4(i=len/2)时调整下处代码是从i=0存储元素,所以在i=3(i=len/2-1)时调整public class 堆排序 { public static void main(String[] args) {// int nums[]={1,3,4,5,2}原创 2021-11-27 23:08:05 · 362 阅读 · 0 评论 -
【六、简单选择排序】
简单选择排序:每一趟在待排序元素中选取关键字最小的元素加入有序子序列public class 简单选择排序 { public static void main(String[] args) { int nums[]={1,3,4,5,2};// int nums[]={49,38,65,97,76,13,27,49,55,04}; sort(nums); System.out.println(Arrays.toS...原创 2021-11-27 09:36:35 · 372 阅读 · 0 评论 -
【五、快速排序】
快速排序:1)在待排序表L[1…n]中任取一个元素pivot作为枢轴(通常取首元素)2)通过一趟排序将待排序表划分为独立的两部分 L[1…k-1] 和 L[k+1…n] ,使得 L[1…K-1] 中的所有元素小于pivot,L[k+1…n] 中的所有元素大于等于pivot,则pivot放在了其最终位置L(k)上,这个过程称为一趟快速排序(或一次划分)3)分别递归的对两个子表重复上述过程public class 快速排序 { public static void main(String[]原创 2021-11-26 23:04:45 · 153 阅读 · 0 评论 -
【四、冒泡排序】
冒泡排序 :从后向前(或从前向后),两两比较相邻元素的值。1.通过第一趟冒泡后,最小元素已交换到第一个位置,也就是它的最终位置。2.第二趟冒泡时对剩余子序列采用同样方法进行排序,以此类推;3.当第n趟结束后没有发生交换,说明表已有序,冒泡排序结束。public class 冒泡算法 { public static void main(String[] args) {// int nums[]={6,1,3,2,4}; int nums[]={49,38,65原创 2021-11-26 10:34:55 · 139 阅读 · 0 评论 -
【三、希尔排序】
希尔排序: 先追求表中元素部分有序,再逐渐逼近全局有序1.先将待排序表分割为若干形如 L[i,i+d,i+2d,…,i+kd]的"特殊"子表,即把相隔某个 "增量 " 的记录组成一个子表2.对各个子表分别进行直接插入排序3.当整个表中的元素已呈“基本有序”时,再对全体记录进行一次直接插入排序。public class 希尔排序 { public static void main(String[] args) {// int nums[]={6,1,3,2,4};原创 2021-11-26 00:04:09 · 368 阅读 · 0 评论 -
【二、折半插入排序】
算法思想:1. 从前面的有序子序列中使用‘折半查找’查找出待插入元素应该被插入的位置2. 给插入位置腾出空间3. 将待插入元素复制到表中的插入位置public class 折半插入排序 { public static void main(String[] args) { int nums[]={6,1,3,2,4}; sort(nums); System.out.println(Arrays.toString(nums)); }原创 2021-11-25 23:53:25 · 192 阅读 · 0 评论 -
【一、直接插入排序】
算法思想:每次将一个待排序的记录按其关键字大小插入到前面已排好序的子序列中,直到插入完成。public class 直接插入排序 { public static void main(String[] args) { int nums[]={6,1,3,2,4}; sort(nums); System.out.println(Arrays.toString(nums)); } static void sort(i...原创 2021-11-25 23:42:03 · 389 阅读 · 0 评论