您的位置:首页 > 编程语言 > Java开发

冒泡排序、二分法查找基于Java的简单实现

2017-06-29 20:16 316 查看
1.冒泡排序:

在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

一个数比完,再开始另一个数

代码:

import java.util.Arrays;

public class Demo2 {

public static void main(String[] args) {
int []values={5,6,8,1,12,19,56,32};
bubblesort(values);
System.out.println(Arrays.toString(values));
}

public static void bubblesort(int []values){
int temp;
for(int i=0;i<values.length;i++){
for(int j=0;j<values.length-1-i;j++){
if(values[j]>values[j+1]){
temp=values[j];
values[j]=values[j+1];
values[j+1]=temp;
}
}
}
}
}


还有这种更符合冒泡的,从下往上比较:

import java.util.Arrays;

public class Demo2 {

public static void main(String[] args) {
int []values={5,6,8,1,12,19,56,32};
bubblesort(values);
System.out.println(Arrays.toString(values));
}

public static void bubblesort(int []values){
int temp=0;
for(int i=0;i<values.length;i++){
for(int j=values.length-1;j>i;j--){
if(values[j]<values[j-1]){
temp=values[j-1];
values[j-1]=values[j];
values[j]=temp;
}
}
}
}
}


输出都为:

[1, 5, 6, 8, 12, 19, 32, 56]


二分法查找:

对于大量数据可以使用,数列要是先是有序的,假定升序,然后从中间开始搜寻,如果比中间数小,再从左边的中间找,以此类推

import java.util.Arrays;

public class BinarySearch {
public static int search(int a[],int nums){
int low=0;
int high=a.length-1;

while(low<=high){
int mid=(low+high)/2;
if(nums>a[mid]){
low=mid+1;
}else if(nums<a[mid]){
high=mid-1;
}else{
return mid;
}
}
return -1;
}
public static void main(String[] args) {
int []a={5,9,6,3,56,157,535,464,158};
Arrays.sort(a);
int find=BinarySearch.search(a, 3);
if(find==-1){
System.out.println("找不到数值");
}else{
System.out.println("找到数值,索引:"+find);
}
}

}


输出:

找到数值,索引:0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java