Java数组常见的几种排序。
public class code2 { public static void main(String[] args) { int[] x = {37, 89, 23}; for (int z = 0; z < x.length - 1; z++) { int minIndex = z; for (int i = z+1; i < x.length; i++) { if (x[i] < x[minIndex]) { minIndex = i; } } if (minIndex != z) { int tem = x[z]; x[z] = x[minIndex]; x[minIndex] = tem; } } for (int i = 0; i < x.length; i++) { System.out.println(x[i]); } } }
这串代码是数组中的选择排序,它的原理是:
先假设一个数组中下标为0 的元素为最小的数值,我们通过循环来比较下标为0 的数值与数组中的其它数值进行比较,如果有比他小的数值,那我们就把它的下标赋给我们先前所定义的变量中minIndex
最外层的循环是我们控制在数组中的第几位放什么数值。并且控制我们的轮回的次数,因为有一些已经排好的数值我们就不要重新把他们排序。
下面那个if语句就是把它们之间的位置调换一下,借助一个其他的变量来完成。
1 import java.util.*; 2 public class code3{ 3 public static void main(String []args){ 4 int []x ={23,34,21,52,56}; 5 Arrays.sort(x); 6 for(int i:x){ 7 System.out.println(i); 8 } 9 10 } 11 12 } 13 //java中的快速排序
这个是Java语言中的自带的一个快速排序的方法,它原理是,现在一个数组中随意找一个数,以他为衡量,比他大的就放在她的后面,比他小的数就放在她的前面就行了,然后再在的前后的那两个区间随意找一个值作为衡量的标准
以此类推,就行了。这个方法是这几种排序方法中最快的方法。
1 public class code2 { 2 public static void main(String []args){ 3 int []a ={15,7,12,2,8,16};(在这里我先定义一个数组)
4 for (int i =0;i<a.length-1;i++){ 这个循环是用来控制数组的排序的轮数的,之所以要减一是因为剩下来的那个数字是自动会排好的。 5 for(int j= 0;j<a.length-1-i;j++){ 而这个是用来控制相连两个数的比较大小的次数,因为有一些的数组已经比好大小了,那我们自然也要把它们给减去,不然重复去交换会使程序效率降低。 6 if(a[j]>a[j+1]) {那个大就把它放在后面,把他们交换位置,这样就完成了。 7 int tem = a[j]; 8 a[j] = a[j + 1]; 9 a[j + 1] = tem; 10 } 11 } 12 } 13 for(int c :a){ 14 System.out.println(c); 15 } 16 17 } 18 }
冒泡排序的工作的原理就是把相连的两个数相互比大小,那个大就把它放在后面,小就放在后面就可以了。