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