软件编程
位置:首页>> 软件编程>> java编程>> JAVA中数组从小到大排序的2种方法实例

JAVA中数组从小到大排序的2种方法实例

作者:MangGuoGG  发布时间:2021-10-09 09:46:18 

标签:java,数组,排序

快速排序

快速排序是一种比较高效的排序算法,采用“分而治之”的思想,通过多次比较和交换来实现排序,在一趟排序中把将要排序的数据分成两个独立的部分,对这两部分进行排序使得其中一部分所有数据比另一部分都要小,然后继续递归排序这两部分,最终实现所有数据有序。

public static void quickSort(int[] arry,int left,int right){
       //运行判断,如果左边索引大于右边是不合法的,直接return结束此方法
       if(left>right){
           return;
       }
       //定义变量保存基准数(第一次进入方法最左边的数字下标为0)
       int base = arry[left];
       //定义变量i,指向最左边
       int i = left;
       //定义j ,指向最右边(第一次进入方法最右边数字下标为数组的长度减1)
       int j = right;
       //当i和j不相遇的时候,再循环中进行检索
       while(i!=j){
           //先由j从右往左检索比基准数小的,如果检索到比基准数小的就停下。
           //如果检索到比基准数大的或者相等的就停下
           while(arry[j]>=base && i<j){
               j--; //j从右往左检索
           }
           while(arry[i]<=base && i<j){
               i++; //i从左往右检索
           }
           //代码走到这里i停下,j也停下,然后交换i和j位置的元素
           int tem = arry[i];
           arry[i] = arry[j];
           arry[j] = tem;
       }
       //如果上面while条件不成立就会跳出这个循环,往下执行
       //如果这个条件不成立就说明 i和j相遇了
       //如果i和j相遇了,就交换基准数这个元素和相遇位置的元素
       //把相遇元素的值赋给基准数这个位置的元素
       arry[left] = arry[i];
       //把基准数赋给相遇位置的元素
       arry[i] = base;
       //基准数在这里递归就为了左边的数比它小,右边的数比它大
       //排序基准数的左边
       quickSort(arry,left,i-1);
       //排右边
       quickSort(arry,j+1,right);
   }

public static void main(String[] args) {
       int[] arry = {11,81,71,61,10,42,33,24,99};
       System.out.println("arry排序前:"+Arrays.toString(arry));
       quickSort(arry,0, arry.length-1);
       System.out.println("arry排序后:"+Arrays.toString(arry));
   }

冒泡排序

  • 冒泡排序思想:给定一个数组,让数组升序 (降序) 排序。

  • 将数组中相邻元素从前往后依次进行比较,如果前一个元素比后一个元素大,则交换,一趟下来后最大元素就在数组的末尾。

  • 依次从上上述过程,直到数组中所有的元素都排列好。

public static void main(String[] args) {
       int[] arr = {18,13,50,15,4,17,18};

System.out.println("arr的排序前:\n18  13  50  15  4  17  18 ");

int temp  = 0 ;
       for(int i = 0 ;i< arr.length -1; i++){
           for(int j = 0; j<arr.length-1-i; j++){
               if(arr[j]>arr[j+1]){
                   //条件成立 交换位置
                   temp = arr[j];
                   arr[j] = arr[j+1];
                   arr[j+1] = temp;
               }
           }

}
       System.out.println("arr排序后:");

for(int i = 0; i<arr.length; i++){

System.out.print(arr[i]+"\t");
       }
   }

来源:https://blog.csdn.net/m0_56000832/article/details/127791469

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com