/*
* 冒泡排序
* 思路:第一轮:第一位与第二位比较判断互换,第二位与第三位比较判断互换至最后一位。
* 第二轮:已找出最大值,比较少一次。,也从第一位开始比较互换。
* 直至完成了所以数的比较互换。
*/
public class Demo15 {
public static void main(String [] args){
int [] arry= {1,4,5,6,9,2,7};
int [] num=score(arry);
print(num);
}
public static int [] score(int [] arry) {
for(int i=0;i<arry.length-1;i++) {
for(int j=0;j<arry.length-1-i;j++){
if(arry[j]>arry[j+1]) {
int temp=arry[j];
arry[j]=arry[j+1];
arry[j+1]=temp;
}
}
}
return arry;
}
public static void print(int [] arry) {
for(int a:arry) {
System.out.print(a+" ");
}
}
}
二分查找法
package com.ujiuye.array;
import java.util.Arrays;
/**
* 数组的二分查找,查找前先排序
* @author hasee
*
*/
public class ArrayBinarySearch {
public static void main(String[] args) {
int[] arry = { 3, 4, 5, 6, 7, 8, 9, 1, 2, 20 };
int [] arr = sort(arry);
System.out.println(Arrays.toString(arr));
System.out.println(findElement(arr, 20));
}
/*
* 冒泡排序
*/
public static int [] sort(int [] arry) {
for(int j = 0;j<arry.length;j++) {
boolean flag = true;
for(int i=0;i<arry.length-1-j;i++) {
if(arry[i]>arry[i+1]) {
int temp = arry[i];
arry[i] = arry[i+1];
arry[i+1] = temp;
flag = false;
}
}
if(flag) {
break;
}
}
return arry;
}
/*
* 二分查找法
*/
public static int findElement(int [] arry,int key) {
int min = 0;
int max = arry.length-1;
while(min<=max) {
int mid = (min+max)/2;
if(key==arry[mid]) {
return mid;
}
if(key>arry[mid]) {
min = mid+1;
}
if(key<arry[mid]) {
max = mid-1;
}
}
return -1;
}
}
- 使用二分查找,必须是有序的数组,查找前先排序
- 二分查找,不保证找到的数字是第一次出现的位置