码迷,mamicode.com
首页 > 编程语言 > 详细

数组常见排序与查找

时间:2017-09-13 19:29:20      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:bsp   for   strong   一半   value   val   冒泡   二分查找   计算   

冒泡排序:

  相邻元素两两比较,大的往后放。第一次排序完毕后,最大值就出现在最大索引出。此方法排序需要比较数组长度-1次

int[] arr = { 24, 65, 87, 57, 12,};
for (int i = 0; i < arr.length-1; i++) {
    for (int j = 0; j < arr.length-1-i; j++) {
        if(arr[j]>arr[j+1]){
            int temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}

选择排序:

  从0索引开始,一次和后面元素比较,小的往前放,第一次比较完毕后,最小值出现在最小索引处。

int[] arr = { 24, 65, 87, 57, 12,};
for (int i = 0; i < arr.length-1; i++) {
    for (int j = i+1; j < arr.length; j++) {
        if(arr[i]>arr[j]){
            int temp = arr[j];
            arr[j] = arr[i];
            arr[i] = temp;
        }
    }
}

二分查找(折半查找):

  前提:数组必须是有序的。

  思想:每次都计算中间的那个元素,比较元素与中间数的大小,就能减少一半的元素。

public static int getIndex(int[] arr,int value){
    int max = arr.length-1;
    int min = 0;
    int mid = (max+min)/2;
    while (arr[mid]!=value) {
        if (arr[mid]>value) {
            max = mid-1;
        }else if (arr[mid]<value) {
            min = mid+1;
        }
        if(min>max){
            return -1;
        }
        mid = (max+min)/2;
    }
    return mid;
}

 

数组常见排序与查找

标签:bsp   for   strong   一半   value   val   冒泡   二分查找   计算   

原文地址:http://www.cnblogs.com/txmwan/p/7516685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!