java演算法簡單複習
氣泡排序:
原理:和相鄰的數對比,然後排序,最後一趟會將最小或最大排到邊邊。
例子:
int []numbers={4,5,2,7};
int temp;
for(int i=0;i<numbers.length;i++){
for( int j=i;j<numbers.length;j++){
if(numbers[i]>numbers[j]){
temp=numbers[i];
numbers[i]=numbers[j];
numbers[j]=temp;
}
}
} for(int z=0;z<numbers.length;z++){
System.out.println(numbers[z]);
}
}
選擇排序:
原理:每一趟從待排序的資料中選擇最小(或最大)的一個數據作為首資料
例子:
public static void main(String[] args) {
// TODO Auto-generated method stub
int []numbers={4,5,2,7,9,6};
int temp;
int k;
for(int i=0;i<numbers.length-1;i++){
k=i;
for(int j=i+1;j<numbers.length;j++){
if(numbers[j]<numbers[k]){
k=j;
}
}
temp=numbers[i];
numbers[i]=numbers[k];
numbers[k]=temp;
}
for(int z=0;z<numbers.length;z++){
System.out.println(numbers[z]);
}
}
}
插入排序:
原理:把n個待排序的資料看成一個有序表和一個無序表,有序表一開始有1個數據,無序表中有n-1個數據;排序過程即每次從無序表中取出第一個資料來源,將它插入到有序表中,使之成為新的有序表,重複n-1次完成整個排序過程。
例子:
int []numbers={4,5,2,7,9,6};
int temp;
for(int i = 1; i<numbers.length; i++){
temp = numbers[i]; //temp是作為插入有序表的數
int j = i-1;
while(j>=0 && numbers[j]>temp){//資料後移
numbers[j+1] = numbers[j];
j--;
}
numbers[j+1] = temp;//插入temp
}
for(int z=0;z<numbers.length;z++){//迴圈列印資料
System.out.println(numbers[z]);
}
}
}