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 }
冒泡排序的工作的原理就是把相连的两个数相互比大小,那个大就把它放在后面,小就放在后面就可以了。
posted @ 2023-12-23 17:19  浮光跃迁  阅读(7)  评论(0编辑  收藏  举报