冒泡排序和二分查找

 

//冒泡排序

public class BubbleSortTest

{

       public static void bubbleSort(int[] array)

       {

              for(int i = 0; i < array.length - 1; i++) //其實此處可以換成i是最大的

              {

                     for(int j = 0; j < array.length - i - 1; j++)

                     {

                            if(array[j] > array[j + 1])

                            {

                                   int temp = array[j];

                                   array[j] = array[j + 1];

                                   array[j + 1] = temp;

                            }

                     }

            //打印每趟排序

                     System.out.println("第" + (i + 1) + "趟排序");

                     for(int k = 0; k < array.length; k++)

                     {

                            System.out.print(array[k] + " ");

                     }

                     System.out.println();

              }

       }

       public static void main(String[] args)

       {

              int[] array = {4, 7, 8, 6 , 3, 2, 9 , 5};

             

              bubbleSort(array);

                    

       }

}

//查找Search

public class ArraySearchTest

{    //普通查找方式

       public static int search(int[] array, int value)

       {

              for(int i = 0; i < array.length; i++)

              {

                     if(value == array[i])

                     {

                            return i;

                     }

              }

              return -1;

       }

    //二分查找

       public static int binarySearch(int[] array, int value)

       {

              int low = 0;

              int high = array.length - 1;

              int middle;

              while(low <= high)

              {

                     middle = (low + high) / 2;

                     for(int i = 0; i < array.length; i++)

                     {

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

                            if(i == middle)

                            {

                                   System.out.print("#");

                            }

                            System.out.print(" ");

                     }    

                     System.out.println();

                     if(array[middle] == value)

                     {

                            return middle;

                     }

                     if(value < array[middle])

                     {

                            high = middle - 1;

                     }

                     if(value > array[middle])

                     {

                            low = middle + 1;

                     }

              }

              return -1;

       }

       public static void main(String[] args)

       {

              int[] a = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};

              int value = 11;

              int index = search(a, value);

              System.out.println(index);

              System.out.println("-----------------");

              int[] b = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};

              int index2 = binarySearch(b , 10);

              System.out.println(index2);

       }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章