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