1.直接插入排序
public class ChaRu { /* 直接插入排序 如果前面已經有若干個記錄排成了有序的序列,則對已排序的元素依次與新元素進行比較。找到合適的位置並插入 */ public static void main(String args[]) { int []numbers = {12,34,32,11,5,67,45,77,15}; System.out.println("-----初始順序-----"); for(int m : numbers) System.out.println(m); int j,k; int n = numbers.length; for(j=1;j<n;j++) { int temp = numbers[j]; k = j-1; while(k>=0&&temp<numbers[k]) { numbers[k+1] = numbers[k]; k--; } numbers[k+1] = temp; } System.out.println("-----排序後的順序-----"); for(int s : numbers) System.out.println(s); } }
2.選擇排序
public class ZhiJieXuanZe { /* 直接選擇排序 逐個找出第i小的元素,並將其放到數組的第i個位置 */ public static void main(String args[]) { int numbers[] = {4,12,11,34,45,67,21,88,32}; int n = numbers.length; for(int j=0;j<n;j++) { int smallest = j; //選出剩餘元素中最小的一個的下標 for(int k=j+1;k<n;k++) if(numbers[k]<numbers[smallest]) { smallest = k; } int temp =numbers[j]; numbers[j] = numbers[smallest]; numbers[smallest] = temp; } for(int s : numbers) System.out.println(s); } }
}
3.冒泡排序
public class MaoPao { /*冒泡排序法 不停地比較相鄰的元素,如果不滿足排序要求,就交換相鄰元素,直到所有元素都已排好序爲止。 */ public static void main(String args[]) { int []numbers = {12,11,5,32,12,56,88,43,56,78,89,4,6,23}; int n = numbers.length; for( int j=0 ;j<n-1;j++) {//n-1趟 //每趟逐次比較相鄰元素,將最大的數放在數組末尾 for(int k=0;k<n-j-1;k++) if(numbers[k]>numbers[k+1]) { int temp = numbers[k]; numbers[k] = numbers[k+1]; numbers[k+1]=temp; } } for(int s: numbers) System.out.println(s); } }
}
4.快速排序
public class KuaiSu2 { /* 快速排序 將元素分爲若干組,首先選取一個軸,【(0+length-1)/2】位置上的元素 左右逐步逼近,左邊大於軸值的數替換到右邊 右邊小於軸值的數替換到左邊。 */ public static void FenGe(int left,int right,int []numbers) { int l =left; int r = right; int location = (l+r)/2; int mid = numbers[location]; System.out.println("調用分割"); while(l<=r) { while(numbers[l]<mid&&l<right) l++; while(numbers[r]>mid&&r>left) r--; if(l<=r) { int temp = numbers[l]; numbers[l] = numbers[r]; numbers[r] = temp; l++; r--; } } if(l<right) FenGe(l,right,numbers); if(r>left) FenGe(left,r,numbers); } public static void main(String args[]) { int numbers[] = {12,34,56,78,32,23,214,54,33,21}; //32爲軸 int n = numbers.length; FenGe(0,n-1,numbers); for(int s : numbers) System.out.println(s); } }
}