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

}


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