/***
* 插入排序法
* 第i個數與(i-1)比較,如果第i個數小與第(i-1)則換位置,再判斷左邊是否有值,如果有值則再比較
*
* 每個數字都與他相鄰的左邊進行比較,直到排序結束
*/
private void charu2() {
int[] a={1,3,9,5,4,3};
for (int i = 1; i < a.length; i++) {
for (int j = i; j >0; j--) {
if (a[j]<a[j-1]) {
int temp;
temp= a[j-1];
a[j-1]=a[j];
a[j] =temp;
}else{
break;
}
}
System.out.print(a[i]);
}
System.out.println();
for (int i :a) {
System.out.println(i);
}
}
/***
* 選擇排序法,每次循環遍歷出最小的數,放到對應的位置
*
* 簡單選擇排序的基本思想:第1趟,在待排序記錄r[1]~r[n]中選出最小的記錄,
* 將它與r[1]交換;第2趟,在待排序記錄r[2]~r[n]中選出最小的記錄,
* 將它與r[2]交換;以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小的記錄,
* 將它與r[i]交換,使有序序列不斷增長直到全部排序完畢。
*/
private void xuanze() {
int[] a = {9,2,8,7,1};
for (int i = 0; i < a.length-1; i++) {
int min=i;
for (int j = i+1; j < a.length; j++) {
System.out.println("j:"+j);
if (a[min]>a[j]) {
min = j;
}
}
if (min!=i) {
int temp;
temp=a[i];
a[i] = a[min];
a[min]=temp;
}
}
for(int i:a){
System.out.println(i);
}
}
/**
* 快速排序-利用Arrays中的sort方法,從小到大的順序排序
*/
private void kuaisu() {
int[] a = { 1, 9, 5, 4 };
Arrays.sort(a);
for (int i : a) {
System.out.println(i);
}
}
/***
* 冒泡排序 ,相鄰的兩個數進行比較,第一個數第二個數後就換位置,如果不大就不用換,然後執行下次內循環,內循環執行完成後執行外循環
*/
public void mao() {
int[] a = { 1, 9, 7, 2 };
int min = 0;
for (int i = 0; i < a.length; i++) { // 獲取循環的次數,以及第一個數的內容
System.out.println("i:" + a[i]);
for (int j = 0; j < a.length - 1; j++) {// 比較相憐的兩個數
if (a[j] > a[j + 1]) { // 如果第一個數比第二個數大,則 第一個數和第二個數換位置
min = a[j + 1];
a[j + 1] = a[j];
a[j] = min;
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
java數組4種排序方法練習
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.