java資料結構和演算法 第3章 簡單排序
阿新 • • 發佈:2019-01-07
氣泡排序、選擇排序、插入排序
public class SortDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a={1,5,6,9,20,56,32,45};
bubbleSort(a);
System.out.println();
int[] b={15,4,89,63,25};
selectSrot(b);
System.out.println();
int [] c={46,41,748,15,4,5};
insertSort(c);
}
//氣泡排序
public static void bubbleSort(int[] a){
for (int i = 0; i < a.length-1; i++) {
for (int j = i+1; j < a.length; j++) {
if(a[i]>a[j]){
int b=a[i];
a[i]=a[j];
a[j]=b;
}
}
}
for (int i : a) {
System.out.print(i+" ");
}
}
//選擇排序
public static void selectSrot(int[] a){
int minIndex = 0;
for (int i = 0; i < a.length; i++) {
minIndex=i;
for (int j = i+1; j < a.length; j++) {
if(a[j]<a[minIndex]){
minIndex=j;
}
}
if (minIndex!=i){
int b=a[i];
a[i]=a[minIndex];
a[minIndex]=b;
}
}
for (int i : a) {
System.out.print(i+" ");
}
}
//插入排序
public static void insertSort(int[] a){
int i; //j前的位置
int j; //當前值的位置
int key; //要插入的值
//從陣列的第二個位置開始遍歷值
for(j=1;j<a.length;j++){
key=a[j];
i=j-1;
//a[i]比當前值大時,a[i]後移一位,空出i的位置,好讓下一次迴圈的值後移
while(i>=0 && a[i]>key){
a[i+1]=a[i]; //將a[i]值後移
i--; //i前移
}//跳出迴圈(找到要插入的中間位置或已遍歷到0下標)
a[i+1]=key; //將當前值插入
}
for (int k : a) {
System.out.print(k+" ");
}
}
}