Array5

/*--------數組排序--------
!!!必須要求掌握(至少一種)   考試必考 
*/ 
// 7 2 1 5 9 0 6 8 4 3

// 每次找剩餘元素中的 最小值
// 依次用新數組記錄
// 刪除該元素 

// int[] orignArr = {7,2, 1, 5, 9, 0, 6, 8, 4, 3};
// int[] sortedArr = new int[orignArr.length];
//

// for(int i=0;i<orignArr.length;i++){
// //每次找剩餘元素中的 最小值/最大值
// int minIdx = 0;
// for(int j=0;j<orignArr.length-i;j++){
// if (orignArr[j]<orignArr[minIdx]) {
// minIdx =j;
// }
// }
//
// //記錄
// sortedArr[i] = orignArr[minIdx];
//
// //刪除原始數組中的值
// for(int j=minIdx;j<orignArr.length-1;j++){
// orignArr[j]=orignArr[j+1];
// }
// orignArr[orignArr.length-1]= -99;
// }
//
// //展示結果
// for (int i = 0; i < sortedArr.length; i++) {
// System.out.print(sortedArr[i]+" ");
// }


/*--------插入排序---------
* 數組分成兩部分  有序和無序
* 循環 0~length-1
* i表示無序部分第一個元素下標
*  再無序部分中 找最值
*  找到後 和無序部分第一個元素互換

* */
//i
//7,2, 1, 5, 9, 0, 6, 8, 4, 3
int[] arr ={7,2, 1, 5, 9, 0, 6, 8, 4, 3};
// for(int i=0;i<arr.length-1;i++){
// //找無序中的最小值  j:i~lenght-1
// int minIdx=i;
// for (int j = i; j < arr.length; j++) {
// if (arr[j]<arr[minIdx]) {
// minIdx = j;
// }
// }
//
// //互換  找到的最值和無序部分的第一個元素
// int tmp = arr[i];
// arr[i] = arr[minIdx];
// arr[minIdx] = tmp;
// }


/*-------冒泡排序---------
7, 2, 1, 5, 9, 0, 6, 8, 4, 3
2, 1  5  7  0  6  8  4  3  9
1  2  5  0  6  7  4  3  8  9
arr[j]  >arr[j+1]
 
*/
  
//次數
for(int i=0;i<arr.length-1;i++){
//每次整個數組  前後兩兩比較  
for(int j=0;j<arr.length-1-i;j++){
//比較 arr[j] arr[j+1]
if (arr[j]>arr[j+1]) {
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}


//展示結果
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}


//上述方法  時間複雜度  都是  O(n^2)
// 插入冒泡  1/2n^2     第一個是2n^2

}


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章