• 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);
                            }
            }

  • 相关阅读:
    java根据汉字获取全拼和首字母
    SQL 增加或删除一列
    C#实现WinForm传值实例解析
    C# 静态类与非静态类、静态成员的区别分析
    c# 面相对象1-概括
    c# 面相对象2-之封装性
    c# 面相对象3-之继承性
    面向对象基础知识(含义、修饰符、三大特性)
    c# 面相对象4-多态性
    用集合求平均分
  • 原文地址:https://www.cnblogs.com/AJPFX/p/10855562.html
Copyright © 2020-2023  润新知