17、java数组查找与交换排序及快速排序

简单的查找,从数组第一个元素开始,逐个与给定值比对,相等,返回数组下标,如果整个数组比对结束没有找到相等的,返回-1.

1、二分查找法(binary search):前提条件,待查找的元素要有序。

先确定三个量:low、heigh、和middle,分别表示一次查询的开始、结束和中间下标

[java] view plain copy print ?
  1. public class BinarySearch 
  2.     public static int binarySearch(int[] array,int value) 
  3.     { 
  4.         int low = 0
  5.         int high = array.length -1
  6.         int middle;      
  7.         while(low <= high) 
  8.         {    
  9.             middle = (low +high) / 2
  10.             /* 这一段可以打印每次查找的中间结果,就是middle的位置
  11.             for(int i = 0; i < array.length; i++)
  12.             {
  13.                 System.out.print(array[i]);
  14.                 if(i == middle)
  15.                 {
  16.                     System.out.print("*");
  17.                 }
  18.                 System.out.print(" ");
  19.             }
  20.             System.out.println();
  21.             */ 
  22.             if(value == array[middle]) 
  23.             { 
  24.                 return middle; 
  25.             } 
  26.             if(value < array[middle]) 
  27.             { 
  28.                 high = middle -1
  29.             } 
  30.             if(value > array[middle]) 
  31.             { 
  32.                 low = middle + 1
  33.             }                    
  34.         } 
  35.         return -1
  36.     } 
  37.  
  38.     public static void main(String[] args) 
  39.     { 
  40.         int[] array = {1,2,3,4,5,6,7,8,9,10,11,12}; 
  41.  
  42.         int index = binarySearch(array,15); 
  43.  
  44.         System.out.println(index); 
  45.     } 

打印的结果为(将打印代码有效)

[java] view plain copy print ?
  1. C:\javacode>java BinarySearch 
  2. 1 2 3 4 5 6* 7 8 9 10 11 12 
  3. 1 2 3 4 5 6 7 8 9* 10 11 12 
  4. 1 2 3 4 5 6 7 8 9 10 11* 12 
  5. 1 2 3 4 5 6 7 8 9 10 11 12
  6. -1 



2、交换排序

数组中第一个元素与后面的逐一比较,如果大于则交换,这样,最小的数就被找到,放在数组中下标0处,然后再对第二个元素进行同样的操作,找出第二小的数据,循环后,按从小到大顺序排列。

3、快速排序

快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。

4、 对于java中的常量的命名规则:所有单词的字母都是大写,如果有多个单词,那么使用下划线即可,比如说:

Public static final int AGE_OF_PERSON=20

在java中声明final常量时通常都会加上static关键字,这样对象的每个实例都会访问唯一一份常量值。

你可能感兴趣的:(java开发工具)