2.Java中常用的几个算法

1.直接排序法:(原理是拿第一个位置和其他的位置进行比较然后在循环四次就可以了)

public static  void zhijiepaixun (int[] arr){

以一个角标的元素和其他元素进行比较。

在内循环第一次结束,最值出现的头角标位置上。

System.out.println("直接排序");

for(inti =0; i < arr.length-1; i++) {

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

             if(arr [i] > arr [j]){

               int temp = arr[i];

                arr[i] = arr[j];

              arr[j] = temp;

              System.out.println(temp);

}


2.冒泡排序: (相邻的两个数字去比较)

//冒泡排序

public static voidmaopao(int[] arr){

//冒泡排序。

//比较方式:相邻两个元素进行比较。如果满足条件就进行位置置换。

//原理:内循环结束一次,最值出现在尾角标位置。

System.out.println("冒泡排序");

for(inti =0; i < arr.length-1; i++) {

for(intj =0; j

if(arr[j]>arr[j+1]){

inttemp = arr[j];

arr[i] = arr[j+1];

arr[j+1] = temp;

}

}

}

}

3.二分法:

//折半查找(二分法)

public static intkm(int[] arr,intkey)

{

intmin,mid,max;

min =0;

max = arr.length-1;

mid = (max+min)/2;

while(arr[mid]!=key)

{

if(key>arr[mid])

min = mid +1;

else if(key

max = mid -1;

if(min>max)

return-1;

mid = (max+min)/2;

}

returnmid;

}

4.反转数组:

(原理:)反转其实就是头角标和尾角标的元素进行位置的置换,然后在让头角标自增。尾角标自减。当头角标<尾角标时,可以进行置换的动作。

//翻转数组

public static voidreverseArray(int[] arr){

for(intstart=0,end=arr.length-1; start

{

swap(arr,start,end);

}

}

//交换位置

public  static voidswap(int[] arr,inta,intb){

inttemp = arr[a];

arr[a] = arr[b];

arr[b] = temp;

}

你可能感兴趣的:(2.Java中常用的几个算法)