java study 04day-數組排序

一、數組定義

int[] arr = new int[2];

int arr[] = new int[2];

int[] arr = new int[]{3,1,6,5,4};

int[] arr = {3,1,6,5,4};

 

eg:

Int[] arr=new int[4]

Arr.length

System.out.println(arr)(輸出引用)

 

二、數組--選擇排序

/*

       選擇排序。

       內循環結束一次,最值出現頭角標位置上。

       */

       public static void selectSort(int[] arr)

       {

              for (int x=0; x<arr.length-1 ; x++)

              {

                     for(int y=x+1; y<arr.length; y++)

                     {

                            if(arr[x]>arr[y])

                            {

                                   /*

                                   int temp = arr[x];

                                   arr[x] = arr[y];

                                   arr[y]= temp;

                                   */

                                   swap(arr,x,y);

                            }

                     }

              }

       }

性能低,代碼簡單,在堆內存中消耗資源比較大.

三、冒泡排序

/*

       冒泡排序

       */

 

       public static void bubbleSort(int[] arr)

       {

              for(int x=0; x<arr.length-1; x++)

              {                                                            

                     for(int y=0; y<arr.length-x-1; y++)//-x:讓每一次比較的元素減少,-1:避免角標越界。

                     {

                            if(arr[y]<arr[y+1])

                            {

                                   /*

                                   int temp = arr[y];

                                   arr[y] = arr[y+1];

                                   arr[y+1] = temp;

                                   */

                                   swap(arr,y,y+1);

                            }

                     }

              }

       }

/*

       發現無論什麼排序。都需要對滿足條件的元素進行位置置換。

       所以可以把這部分相同的代碼提取出來,單獨封裝成一個函數。

       */

       public static void swap(int[] arr,int a,int b)

       {

              int temp = arr[a];

              arr[a] = arr[b];

              arr[b] = temp;

       }

Arrays.sort(arr);//java中已經定義好的一種排序方式。開發中,對數組排序。要使用該句代碼。

四、折半查找

int x = Arrays.binarySearch(arr,190);//java提供好的一個進行折半查找的功能。開發時使用這個。

折半查找。提高效率,但是必須要保證該數組是有序的數組。

public static int halfSearch(int[] arr,int key)

       {

              int min,max,mid;

              min = 0;

              max = arr.length-1;

              mid = (max+min)/2;

 

              while(arr[mid]!=key)

              {

                     if(key>arr[mid])

                            min = mid + 1;

                     else if(key<arr[mid])

                            max = mid - 1;

 

                     if(min>max)

                            return -1;

                     mid = (max+min)/2;

              }

              return mid;

       }

 

第二種方式

public static int halfSearch_2(int[] arr,int key)

       {

              int min = 0,max = arr.length-1,mid;

 

              while(min<=max)

              {

                     mid = (max+min)>>1;

 

                     if(key>arr[mid])

                            min = mid + 1;

                     else if(key<arr[mid])

                            max = mid - 1;

                     else

                            return mid;

              }

              return -1;

       }

練習:有一個有序的數組,想要將一個元素插入到該數組中,

還要保證該數組是有序的。如何獲取該元素在數組中的位置。

public static int getIndex_2(int[] arr,int key)

       {

              int min = 0,max = arr.length-1,mid;

 

              while(min<=max)

              {

                     mid = (max+min)>>1;

 

                     if(key>arr[mid])

                            min = mid + 1;

                     else if(key<arr[mid])

                            max = mid - 1;

                     else

                            return mid;

              }

              return min;

       }

 

發佈了41 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章