首页 > 代码库 > 排序算法
排序算法
1 public static void sort(int[] a,int left,int right) { //快速排序 2 if(left < right){ 3 int key = a[left]; 4 int low = left; 5 int high = right; 6 while(low < high){ 7 while(low < high && a[high] > key){ 8 high--; 9 }10 11 while(low < high && a[low] < key){12 low++;13 }14 15 a[low] = a[low]^a[high];16 a[high] = a[high]^a[low];17 a[low] = a[low]^a[high]; 18 }19 a[low] = key;20 sort(a,left,low-1);21 sort(a,low+1,right);22 }23 }
1 public static void sort(int[] a) { //冒泡排序 2 for(int i=0;i<a.length;i++) { 3 for(int j=0;j<a.length-1;j++) { 4 if(a[j]>a[j+1]) { 5 a[j] = a[j]^a[j+1]; 6 a[j+1] = a[j+1]^a[j]; 7 a[j] = a[j]^a[j+1]; 8 } 9 }10 }11 }
1 public static void sort(int[] a) { //选择排序 2 3 for(int i=0;i<a.length;i++) { 4 int flag = i; 5 for(int j=i;j<a.length-1;j++) { 6 if(a[j+1]<a[flag]) { 7 flag = j+1; 8 } 9 }10 if(flag!=i) {11 a[i] = a[i]^a[flag];12 a[flag] = a[flag]^a[i];13 a[i] = a[i]^a[flag];14 }15 }16 }
1 public static void sort(int[] a) { //插入排序 2 int flag,j; 3 for(int i=1;i<a.length;i++) { 4 flag = a[i]; 5 for(j=i-1;j>=0 && flag<a[j];j--) { 6 a[j+1] = a[j]; 7 } 8 a[j+1] = flag; 9 }10 }
1 public static int[] sort(int[] a, int low, int high) { //归并排序 2 int mid = (low + high) / 2; 3 if (low < high) { 4 // 左 5 sort(a, low, mid); 6 // 右 7 sort(a, mid + 1, high); 8 // 合并 9 merge(a, low, mid, high); 10 } 11 return a; 12 } 13 public static void merge(int[] a, int low, int mid, int high) { 14 int[] flag = new int[high - low + 1]; 15 int i = low;16 int j = mid + 1;17 int k = 0; 18 19 20 while (i <= mid && j <= high) { 21 if (a[i] < a[j]) { 22 flag[k++] = a[i++]; 23 } else { 24 flag[k++] = a[j++]; 25 } 26 } 27 28 //剩余29 while (i <= mid) { 30 flag[k++] = a[i++]; 31 } 32 33 //剩余34 while (j <= high) { 35 flag[k++] = a[j++]; 36 } 37 38 39 for (int k2 = 0; k2 < flag.length; k2++) { 40 a[k2 + low] = flag[k2]; 41 } 42 }
排序算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。