Java语言-12:一维数组的三种基础排序方法

1、关于一维数组

        1)定义:int[]arr = new int[i];            i表示数组元素的个数

        2)赋值:int[]arr = {i,j,k,l,.....};                I,J,K 均表示整形数字。

        3)遍历:

                    例如:

                          class Array{      

                        public static void main(String[]args){

                           //定义数组

                        int[]arr = {12,23,34,21,13}

                        //for循环

                            for(int i = 0;i<arrlength;i++){

                                    System.out.println(arr[i]+“     ”);

                }

    }                         

}

                    输出为:12   23    34    21     13

2、求数组的最值

            1)冒泡排序:

                            规则:不断比较数组中相邻的两个元素,较小者想前排,较大者向后排;

例如:

                    class ArrayMaopao{

                        public static void main(String[]args){

                            //定义数组

                        int[]arr = {12,2,34,43,23};

                // 调用排序方法
bubbleSort(arr);
// 调用打印方法
printArray(arr);
System.out.println(arr);

}    

                            //定义打印的方法:

                                public static void printArray(int[]arr){

                            //遍历

                                for(int i = 0;i<arr,legth;i++){

                                        System.out.print(arr[i]);

        }

            }          

                            //定义排序的方法

                                  public static void bubbleSort(int[] arr) {
// 规定循环的次数
for (int i = 0; i < arr.length - 1; i++) {
// 规定比较的次数arr.length-i-1
for (int j = 0; j < arr.length - i - 1; j++) {
// 判断元素之间的大小并进行排序
if (arr[j] > arr[j + 1]) {
// 创建中间变量将arr[j]和arr[j+1]的索引位置进行对换
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}

}
}

            }

                            输出结果为:2  12   23   34    43

2)选择排序

                 排序规则:从第一个元素开始,按照从前往后的顺序与每一个元素进行比较,若大于

         要比较的元素,则继续向后比较,若小于要比较的元素,则与其对换位置,继续执行此规则。  

       public class ArrayChoose {

public static void main(String[] args) {
// 定义一个一维数组
int[] arr1 = { 23, 34, 12, 67, 43 };
// 调用排序方法
bubbleSort1(arr1);
System.out.print("该数组元素从小到大排序后为:[");
// 调用打印方法
printArray1(arr1);
System.out.println(arr1);
}


// 创建一个打印方法
public static void printArray1(int[] arr1) {

// 遍历该数组
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + ",");// 打印该数组元素
}
System.out.println("]");
}


// 创建一个选择排序方法
public static void bubbleSort1(int[] arr1) {
// 规定循环次数(外层循环)
for (int i = 0; i < arr1.length - 1; i++) {
// 规定比较次数
for (int j = i + 1; j < arr1.length; j++) {
// 判断元素之间的大小并进行排序
if (arr1[i] > arr1[j]) {
// 定义中间变量对换arr1[i]和arr1[j]的索引位置
int temp = arr1[i];
arr1[i] = arr1[j];
arr1[j] = temp;
}
}
}
}

}

       3)折半查找(二分查找):

            前提:数组一定是有序的                 

            作用:求出要求的元素所在数组中的索引

            步骤:a、定义最小索引和最大索引

                        b、计算中间索引

                    c、判断:中间 索引元素和需要查找的元素比较

                                    若相等:直接返回中间索引

                                    如果大了,则向左边找

                                    如果小了,则向右边找

                    d、如果都不符合,则重新计算中间索引,回到步骤b继续查找

例如:

                package Array;


public class ArrayHalf {


public static void main(String[] args) {
//定义有序数组
int[]arr2 = {2,4,6,8,9,10};
int index = search(arr2, 9) ;
System.out.println(index);
}
//定义计算中间索引的方法
public static int search(int[]arr2,int half){
int max = arr2.length-1;
int min = 0;
int mid = (min+max)/2;
while(arr2[mid]!=half) {
//不相等
if(arr2[mid] >half) {
max = mid -1 ;
}else {
min = mid + 1 ;
}

//如果这value在数组中找不到,找不到返回-1
if(min>max) {
return -1 ;
}

//重新计算出中间索引
mid = (max+min)/2 ;
}


return mid ;


}

}

                    这是三种基本的数组排序方式:明天来阐述如何利用这三种排序方式来求出未经过排序的一维数组

                    所需要求得索引。

猜你喜欢

转载自blog.csdn.net/qq_41833394/article/details/80114135