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
}
}
!!!必須要求掌握(至少一種) 考試必考
*/
// 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
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.