首页 > 代码库 > 基本排序算法的实现
基本排序算法的实现
1 package com.dongbin.sort; 2 3 import java.util.Arrays; 4 5 /** 6 * 排序 7 * @author dongbin 8 * 9 */ 10 public class AllSort { 11 12 public static void main(String[] args) { 13 int[] arr = {1,32,43,11,23,45}; 14 MergeSort(arr); 15 System.out.println(Arrays.toString(arr)); 16 } 17 18 /** 19 * 冒泡排序 20 * @param arr 21 * @return 22 */ 23 public static int[] BubbleSort(int[] arr){ 24 25 for(int i=0;i<arr.length-1;i++){ 26 for(int j=i+1;j<arr.length;j++){ 27 if(arr[i]>arr[j]){ 28 int temp = arr[i]; 29 arr[i] = arr[j]; 30 arr[j] = temp; 31 } 32 } 33 } 34 return arr; 35 } 36 37 /** 38 * 选择排序 39 * @param arr 40 * @return 41 */ 42 public static int[] SelectionSort(int[] arr){ 43 44 int min; 45 for(int i=0;i<arr.length-1;i++){ 46 min=i; 47 for(int j=i+1;j<arr.length;j++){ 48 if(arr[i]>arr[j]){ 49 min = j; 50 } 51 } 52 53 if(min!=i){ 54 int temp = arr[i]; 55 arr[i] = arr[min]; 56 arr[min] = temp; 57 } 58 } 59 return arr; 60 } 61 62 /** 63 * 插入排序 64 * @param arr 65 * @return 66 */ 67 public static int[] InsertSort(int[] arr){ 68 69 for(int i=1;i<arr.length;i++){ 70 int current = arr[i]; 71 int pos = i; 72 for(int j=i-1;j>=0;j--){ 73 if(arr[j]>current){ 74 arr[j+1] = arr[j]; 75 pos = j; 76 } 77 } 78 arr[pos]=current; 79 } 80 return arr; 81 } 82 83 /** 84 * 快速排序 85 * @param arr 86 * @return 87 */ 88 public static int[] QuickSort(int[] arr){ 89 if(arr.length<=1){ 90 System.out.println("传入的数组长度小于或等于1"); 91 }else{ 92 _quickSort(arr, 0, arr.length-1); 93 } 94 95 return arr; 96 } 97 98 public static void _quickSort(int[] arr ,int start, int end){ 99 if(start>=end){100 return;101 }102 103 int i = start,j=end,current = arr[j];104 boolean flag = false;105 106 while(i!=j){107 if(flag){108 if(arr[j]<current){109 int temp = arr[j];110 arr[j] = arr[i];111 arr[i] = temp;112 flag = false;113 }else j--;114 }else{115 if(arr[i]>current){116 int temp = arr[j];117 arr[j] = arr[i];118 arr[i] = temp;119 flag = true;120 }else i++;121 }122 }123 124 _quickSort(arr, start, i-1);//左边125 _quickSort(arr, j+1, end);//右边126 } 127 128 129 /**130 * 归并排序131 * @param arr132 * @return133 */134 public static int[] MergeSort(int[] arr){135 _mergeSort(arr, 0, arr.length-1);136 return arr;137 }138 139 public static void _mergeSort(int[] arr,int left,int right){140 141 if (left < right) {142 int mid = (left + right) / 2;143 // 划分144 _mergeSort(arr, left, mid);145 _mergeSort(arr, mid + 1, right);146 147 // 合并148 _merge(arr, left, mid, right);149 }150 151 }152 public static void _merge(int[] arr,int left,int mid,int right){153 154 int[] newArr = new int[arr.length];//新数组155 int center = mid+1;156 int tmp = left;157 int pos = left;158 159 while(left<=mid&¢er<=right){160 if(arr[left]<=arr[center]){161 newArr[pos++]=arr[left++];162 }else{ 163 newArr[pos++]=arr[center++];164 }165 }166 167 while(left<=mid){168 newArr[pos++]=arr[left++];169 }170 171 while(center<=right){172 newArr[pos++]=arr[center++];173 }174 175 while(tmp<=right){176 arr[tmp] = newArr[tmp++];177 }178 179 180 181 }182 }
基本排序算法的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。