以从大到小排序为例.
(1)直接排序
public class Sort01 { public static void main(String[] args){ // 对数组进行从大到小排序,用直接排序 // 第一个与后面的比较,比第一个数字大的都进行交换 int[] temp = {22,31,45,76,78,56,23,91,16,6}; for(int i = 0;i<temp.length;i++){ for(int j = i;j<temp.length;j++){ if(temp[i]<temp[j]){ int t = temp[i]; temp[i] = temp[j]; temp[j] = t; } } } for(int x : temp){ System.out.print(x +" "); } } }执行结果为:
D:\Java>javac Sort01.java D:\Java>java Sort01 91 78 76 56 45 31 23 22 16 6(2)选择排序
public class Sort02{ public static void main(String[] args){ // 选择排序,由大到小排列 // 先找处最大值,记录下标,与第一个数据进行交换 int[] temp = {22,31,45,76,78,56,23,91,16,6}; for(int i = 0;i<temp.length;i++){ int max = temp[i]; int index = i; for(int j = i;j<temp.length;j++){ if(max<temp[j]){ max = temp[j]; index = j; } } int t = temp[index]; temp[index] = temp[i]; temp[i] = t; } for(int x : temp){ System.out.print(x +" "); } } }代码执行结果为:
D:\Java>javac Sort02.java D:\Java>java Sort02 91 78 76 56 45 31 23 22 16 6(3)冒泡排序
public class Sort03{ public static void main(String args[]){ // 由大到小排列,冒泡排序 // 先互两两之间进行比较,将两数之间的最大值置于前 int[] temp = {22,31,45,76,78,56,23,91,16,6}; for(int i = 0;i<temp.length;i++){ for(int j = 0;j<temp.length-i-1;j++){ if(temp[j]<temp[j+1]){ int t = temp[j]; temp[j] = temp[j+1]; temp[j+1] = t; } } } for(int x : temp){ System.out.print(x +" "); } } }代码执行结果为:
D:\Java>javac Sort03.java D:\Java>java Sort03 91 78 76 56 45 31 23 22 16 6冒泡排序(收敛速度快),适用于对一个数组或一个数组的某一个部分排序
作用与 for 循环相同,将 temp 的一个值赋给 x,在输出,一直循环,直到 temp 中没有值。
Java中很著名的思想:用空间换时间 以数字反转为例: (4)数字反转(空间小效率低)
public class Demo { public static void main(String args[]) { int[] temp = {1,2,3,4,5,6,7}; for(int i = 0;i<=temp.length/2;i++) { int t = temp[i]; temp[i] = temp[temp.length-1-i]; temp[temp.length-1-i] = t; } for(int x : temp){ System.out.print(x +" "); } } }执行结果为:
D:\>javac Demo.java D:\>java Demo 7 6 5 4 3 2 1(5)数字反转(效率高空间大)
public class Demo { public static void main(String args[]) { int[] temp = {1,2,3,4,5,6,7}; int[] temp1 = new int[temp.length]; for(int i = 0;i<temp.length;i++) { temp1[i] = temp[temp.length-1-i]; } for(int x : temp1){ System.out.print(x +" "); } } }执行结果为:、
D:\>javac Demo.java D:\>java Demo 7 6 5 4 3 2 1在Java中通过使得所占内存(空间)增大,而将效率增强(时间短),或者用时间换取内存变小。 鱼和熊掌不可得兼!