算法学习
Alan雪
这个作者很懒,什么都没留下…
展开
-
-归并排序-
归并排序 先分再合 分:利用mid=(left+right)/2,分左右进行 合(同时排序):1、先把左右两边(有序)的数组按照规则填充到temp数组,直到有一边处理完为止。2、将未处理完的一组,直接放入temp数组。3、将temp数组的元素覆盖arry数组。 public class MergeSort { public static void Merge(int[] arry,int left,int mid,int right){ //先把左右两边数组按照规则有序填充原创 2021-11-10 17:16:01 · 274 阅读 · 1 评论 -
交换排序:2、冒泡排序
交换排序:2、冒泡排序 前后比较,交换位置 public class BubbleSort { public void bubbleSort(int[] arrys){ //防止数组下界溢出-1 for(int i=0;i<arrys.length-1;i++){ for(int j=0;j<arrys.length-i-1;j++){ if(arrys[j]>arrys[j+1]) {原创 2021-11-10 17:15:12 · 393 阅读 · 0 评论 -
交换排序:1、快速排序
交换排序:1、快速排序 先假设一个中枢轴,将小于中枢轴的换到前面,大于中枢轴的换到后面,确定中枢轴的下标,返回给排序函数,进行递归。 public class QuickSort { //快速排序函数 public static void quickSort(int[] arry,int left,int right){ int pivo; if(left<right){ pivo=partition(arry,left,rig原创 2021-11-10 17:14:33 · 103 阅读 · 0 评论 -
选择排序:1、简单选择排序
选择排序:1、简单选择排序 先找最小,然后交换 public class SelectionSort { public void selectionSort(int[] arrys){ for(int i=0;i<arrys.length;i++){ //先将第一个下标赋给miIndex int minIndex=i; for(int j=i;j<arrys.length;j++){原创 2021-11-10 17:13:38 · 83 阅读 · 0 评论 -
插入排序:1、希尔排序
插入排序:1、希尔排序 先确定增长量,利用增长量分组,分别进行插入排序,最后再一起排序。 class ShellSort { public void ShellSort(int[] arry){ //确定增长量 int h=1; while(h<arry.length/2){ h=2*h+1; } while(h>=1){ //找到带插入的元素原创 2021-11-10 17:09:25 · 246 阅读 · 0 评论 -
插入排序:2、直接插入排序
插入排序:2、直接插入排序 先假设第一个数字已经排好序,将后面的数字与前面的数字依次比较。 class InsertionSort { public void InsertionSort(int[] arry){ //假设第一个已经排好序,从1开始 for(int i=1;i<arry.length;i++){ //将前面的数与arry[j]比较 for(int j=i;j>0;j--){原创 2021-11-10 17:10:52 · 105 阅读 · 0 评论