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

来源:互联网 发布:淘宝的劲霸官方旗舰店 编辑:程序博客网 时间:2024/05/19 02:31

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

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

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

public class BinarySearch{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;/* 这一段可以打印每次查找的中间结果,就是middle的位置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(value == array[middle]){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[] array = {1,2,3,4,5,6,7,8,9,10,11,12};int index = binarySearch(array,15);System.out.println(index);}}

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

C:\javacode>java BinarySearch1 2 3 4 5 6* 7 8 9 10 11 121 2 3 4 5 6 7 8 9* 10 11 121 2 3 4 5 6 7 8 9 10 11* 121 2 3 4 5 6 7 8 9 10 11 12*-1



2、交换排序

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

3、快速排序

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

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

Public static final int AGE_OF_PERSON=20

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

原创粉丝点击