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
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.