zoukankan      html  css  js  c++  java
  • AJPFX关于java数组排序

       /**
             *将数组中的两个指定下标的元素交换位置          
             *@param arr 要交换元素的数组引用地址值
             *@param a 数组索引
             *@param b 数组索引
             */
             private static void swap(int[] arr,int a,int b){
                            int temp=arr[a];
                            arr[a]=arr[b];
                            arr[b]=temp;
             }

             /**
             *冒泡排序
             *@param arr 将要排序的数组引用地址值
             *@param type true表示顺序排序,false表示逆序排序
             */
             public static void bubbleSort(int[] arr, boolean type){                
                     if(type){
                              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]){
                                                            swap(arr,j,j+1);
                                                    }
                                    }
                            }
                     }else{
                                    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]){
                                                            swap(arr,j,j+1);
                                                    }
                                            }
                                    }
                     }
             }

              /**
             *选择排序
             *@param arr 将要排序的数组引用地址值
             *@param type true表示顺序排序,false表示逆序排序
             */
             public static void selectSort(int[] arr,boolean type){
                     if(type){
                             for(int i=0;i<arr.length-1;i++){
                                     for(int j=i;j<arr.length;j++){
                                             if(arr[i]>arr[j]){
                                                     swap(arr,i,j);
                                             }
                                     }
                             }
                     }else{
                             for(int i=0;i<arr.length-1;i++){
                                     for(int j=i;j<arr.length;j++){
                                             if(arr[i]<arr[j]){
                                                     swap(arr,i,j);
                                             }
                                     }
                             }
                     }
             }        

             /**
             *快速排序
             *@param arr 将要排序的数组引用地址值
             *@param l 数组索引的初始位置
             *@param r 数组的长度-1
             *@param type true表示顺序排序,false表示逆序排序
             */
             public static void  quicklySort(int[] arr,int l,int r,boolean type){
                             if(l<r){
                                    int i=l,j=r,x=arr[i];
                                    if(type){
                                             while(i<j){
                                                    while(i<j&&arr[j]>x)
                                                            j--;
                                                    if(i<j)
                                                            arr[i++]=arr[j];
                                                    while(i<j&&arr[i]<x)
                                                            i++;
                                                    if(i<j)
                                                            arr[j--]=arr[i];
                                            }
                                    }else{
                                             while(i<j){
                                                    while(i<j&&arr[j]<x)
                                                            j--;
                                                    if(i<j)
                                                            arr[i++]=arr[j];
                                                    while(i<j&&arr[i]>x)
                                                            i++;
                                                    if(i<j)
                                                            arr[j--]=arr[i];
                                            }
                                    }
                                    arr[i]=x;
                                    quicklySort(arr,l,r-1,type);
                                    quicklySort(arr,l+1,r,type);
                            }
            }

  • 相关阅读:
    python_函数_文件
    Day_2_Python_str_list_dict的使用
    Day_1_Python_循环和格式化
    influxdb2.0版本部署+自启
    格式化Java内存工具JOL输出
    卷心菜的屯币日记
    influxDB时序数据库2.0FLUX查询语法使用记录
    两种转换2021-01-01T00:00:00Z为2021-01-01 00:00:00时间格式的方式(UTC时间转为yyyy-MM-dd HH:mm:ss)
    ThreadLocal的用处
    CentOS7使用ISO镜像文件作为离线Yum源
  • 原文地址:https://www.cnblogs.com/AJPFX/p/10855562.html
Copyright © 2011-2022 走看看