String[] b=str.split("query|,");//query分隔或者逗号分隔 归并排序,递归实现 public class MergeSort2 { // 对data数组中的 [a,b) 区间的数据进行归并排序, // 排序结束后,[a,b)间数据处于升序有序状态 static void mergeSort(int[] data, int a,int b) { if (a >= b) return; int mid=(a+b)/2;//拆分排序 mergeSort(data,a,mid); mergeSort(data,mid+1,b); //前面两个拍好了或者只有个一个元素时执行下面 merge(data,a,mid,b); } // data中的数据, [low,mid), [mid,high) 是两段待归并数据。归并后,[low,high) 整体有序 static void merge(int[] data, int low,int mid,int high) { int[] tmp = new int[high-low+1]; int[] a=new int[mid-low+1]; int[] b=new int[high-mid]; //给两半数组赋值 for (int i = 0; i < a.length; i++) { a[i]=data[low+i-1]; } for (int i = 0; i < b.length; i++) { b[i]=data[mid+i]; } int ai=0;//只要能表达其位置的都可以称为指针,不一定是指向内存地址,C可能是指向内存地址 int bi=0; int ci=0; while (ai<a.length&&bi<high-mid) { //谁小就先添加谁 if (a[ai]<=b[bi]) { tmp[ci++]=a[ai++]; } else { tmp[ci++]=b[bi++]; } } //判断剩余,将剩余的添加到尾部 while (ai<a.length)tmp[ci++]=a[ai++]; while (bi<b.length)tmp[ci++]=b[bi++]; //把排好的值赋给数组 int i=0; int k=low-i-1; while (i<ci) { data[k++]=tmp[i++]; } } //上面的操作针对数组,所以数组发生了变化,若是变量,只是在方法中改变值,出了方法值不变,除非设成引用类型 public static void main(String[] args) { int[] a = { 26, 29, 60, 60, 11, 15, 20, 75, 100, 500, 1000, 3, 5, 6, 8,9 }; //int[] a={3,2,1}; mergeSort(a, 1,a.length); for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } } }
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/
树形排序
public class TreeSort { public static int[] treeAgain(int[] a) { // 树排序挺浪费空间的,数值16个,排序完全二叉树,需要31个节点 int[] allCode = new int[2 * a.length - 1]; for (int i = allCode.length - 1; i >= 0; i--) { if (i - a.length + 1 >= 0) { allCode[i] = a[i - a.length + 1]; } else { if (allCode[i * 2 + 1] <= allCode[i * 2 + 2]) { allCode[i] = allCode[i * 2 + 1]; } else { allCode[i] = allCode[i * 2 + 2]; } } } return allCode; } public static void treeSort(int[] a) { int allCode[] = null; while (true) { //重新赋值后再排序 allCode = treeAgain(a); if (allCode[0]==Integer.MAX_VALUE) { break; } System.out.print(allCode[0] + " "); for (int i = 0; i < a.length; i++) { if (a[i] == allCode[0]) { a[i] = Integer.MAX_VALUE; } } } //树形显示 /* * int n = 1; * * for (int i = 0; i < allCode.length; i++) { * System.out.print(allCode[i] + " "); * * int x = (int) Math.pow(2, n) - 2; if (i == x) { System.out.println(); * n++; } * * } */ } /** * @param args */ public static void main(String[] args) { int[] a = { 26, 29, 60, 60, 11, 15, 20, 75, 100, 500, 1000, 3, 5, 6, 8, 9 }; treeSort(a); } }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 字符串排序
, int
, 数据
, 排序
, data
, java 排序
, 排序java
, java排序赋值
, java 排序
, mid
, Java排序
, 归并排序c语言
java字符串分隔符
,以便于您获取更多的相关知识。