赞
踩
int min = arr[minIndex]; for(int j = 1 + i;j<arr.length;j++){ if(min > arr[j]){ min = arr[j]; minIndex = j; } } arr[minIndex] = arr[i]; arr[i] = min; }
}
4、速度测试 选择排序:120000数据,4秒 ![](https://img-blog.csdnimg.cn/20200523091411841.png) ### (三)插入排序 1、基本思想 把n个待排序的元素第一位看成有序表,其它的看成无序表,排序过程中,每次从无序表中取出一个数,依次与有序表中的数进行比较,插入到合适的位置。 2、动态效果图 ![](https://img-blog.csdnimg.cn/2020052200155496.gif) 3、代码实现
//插入排序
public static void insertSort(int[] arr ){
int insertVal = 0; int insertIndex = 0; for (int i = 1; i < arr.length; i++) { //定义待插入的数 insertVal = arr[i]; // 即arr[i]的前面这个数的下标 insertIndex = i - 1; // 给insertVal 找到插入的位置 // 说明 // 1. insertIndex >= 0 保证在给insertVal 找插入位置,不越界 // 2. insertVal < arr[insertIndex] 待插入的数,还没有找到插入位置 // 3. 就需要将 arr[insertIndex] 后移 while(insertIndex >= 0 && insertVal < arr[insertIndex]){ arr[insertIndex+1] = arr[insertIndex]; insertIndex--; } // 当退出while循环时,说明插入的位置找到, insertIndex + 1 if(insertIndex + 1 != i){ arr[insertIndex+1] = insertVal; } }
}
4、速度测试 插入排序:120000数据,1秒 ![](https://img-blog.csdnimg.cn/20200523091529335.png) ### (四)希尔排序 1、基本思想 希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法也是冲破O(n²)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较较远的元素。 2、效果图 ![](https://img-blog.csdnimg.cn/20200523135326850.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。