免费制作网站模板,百度有哪些产品,wordpress占用cpu过高,员工怎么登录企业邮箱插入排序
思路: 把集合分成有序表与无序表,最开始有序表只有一个元素,无序表有n-1个元素,排序过程中每次取出无序表的第一个元素,然后与有序表中的元素比较,插入到适当位置 小结: 1.一共要进行n-1次排序循环
排序过程
排序前---
[101, 34, 119, 1]
第1轮插入后---
[34, 101,…插入排序
思路: 把集合分成有序表与无序表,最开始有序表只有一个元素,无序表有n-1个元素,排序过程中每次取出无序表的第一个元素,然后与有序表中的元素比较,插入到适当位置 小结: 1.一共要进行n-1次排序循环
排序过程
排序前---
[101, 34, 119, 1]
第1轮插入后---
[34, 101, 119, 1]
第2轮插入后---
[34, 101, 119, 1]
第3轮插入后---
[1, 34, 101, 119]代码实现:
public class InsertSort {public static void main(String[] args) {int arr[] {101, 34, 119, 1};System.out.println(排序前---);System.out.println(Arrays.toString(arr));insertSort(arr);}public static void insertSort(int[] arr) {//因为无序集合的第一个数是arr[1]for (int i 1; i arr.length; i) {//第一轮 34,101,119,1int insertVal arr[i];//待插入的数(针对无序集合),是无序集合中的第一个arr[1],arr[0]是有序集合的第一个int insertIndex i-1;//insertval的下标前一个数,要插入的位置//insetVal找到要插入的位置//insertIndex 0保证其不要越界//insertValarr[insertIndex]待插入的数还没有找到插入位置,arr[insertIndex]还得向后移//要插入的数得小于要插入下标位置的数while (insertIndex 0 insertVal arr[insertIndex]) {//arr[insertIndex]向后移arr[insertIndex 1] arr[insertIndex];insertIndex--;}//判断是否需要赋值if (insertIndex1!i){//当退出while()时说明,要插入的位置找到:insertIndex1arr[insertIndex1]insertVal;}System.out.println(第i轮插入后---);System.out.println(Arrays.toString(arr));}}
}
无注释版:
public class TestSort {public static void main(String[] args) {int arr[] {101, 34, 119, 1};System.out.println(排序前---);System.out.println(Arrays.toString(arr));insertSort(arr);}public static void insertSort(int[] arr) {for (int i 1; i arr.length ; i) {int valuearr[i];int indexi-1;while (index0valuearr[index]){arr[index1]arr[index];index--;}if (index1!i){arr[index1]value;}System.out.println(第i轮插入后---);System.out.println(Arrays.toString(arr));}}
}