package com.example.demo.Controler; import org.springframework.web.bind.annotation.SessionAttributes; import java.util.Arrays; public class MegrSort { //归并排序思想 //首先将数组分为{0,7,8,6}{2,3,4,10} //在次分为{0,7}{8,6}{2,3}{4,10} //最后分为 0 7 8 6 2 3 4 10 //然后进行合并 //{0 7} {6 8} {2 3} {4 10} //继续合并 //{0 6 7 8} {2 3 4 10} //最后合并{0 2 3 4 6 7 8 10} //以为在合并时是排好序的。所以使用插入排序 public static void main(String[] args) { int[] data = {9,7,8,6,3,2,4,10}; //冒泡排序 /*for(int i=0;i<data.length-1;i++){ for(int j = 0;j<data.length-1-i;j++){ if(data[j] > data[j+1]){ *//*int temp = data[j]; data[j] = data[j+1]; data[j+1] =temp;*//* data[j] = data[j] + data[j+1]; data[j+1] = data[j] -data[j+1]; data[j] = data[j] - data[j+1]; } } } System.out.println(Arrays.toString(data));*/ int len = data.length; int left = 0; int right = len-1; mergeSort(data , left ,right); System.out.println(Arrays.toString(data)); //插入排序 /*for(int i = 1;i<data.length;i++){ int a = data[i]; int j =i-1; for(;j>=0;j--){ if(data[j] > a){ data[j+1] = data[j]; }else{ data[j+1] = a; break; } } } System.out.println(Arrays.toString(data));*/ } public static void mergeSort(int[] data, int left, int right){ if(left < right){ int mid = (right+left)/2; mergeSort(data ,left, mid); mergeSort(data ,mid+1,right); getInsertSort(data, left, mid, right); } } public static void getInsertSort(int[] data,int left,int mid ,int right){ int[] temp = new int[data.length]; int leftBegin = left; int rightBegin = mid + 1; int loc = left; while(leftBegin <= mid && rightBegin <= right){ if(data[leftBegin] < data[rightBegin]){ temp[loc] = data[leftBegin]; leftBegin++; loc++; }else{ temp[loc] = data[rightBegin]; rightBegin++; loc++; } } while(leftBegin <= mid){ temp[loc++] = data[leftBegin++]; } while (rightBegin <= right){ temp[loc++] = data[rightBegin++]; } for(int i = left;i<=right ;i++){ data[i] = temp[i]; } } }
12-22
07-11
07-11
07-11
07-11
07-11
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交