wifiu盘做网站陕西网站备案注销
wifiu盘做网站,陕西网站备案注销,下沙建设局网站,吉林省建设厅网站一、算法思想
给定一个无序数列#xff0c;模拟一个指针从第0位开始向后#xff0c;始终保持当前位置左边的数列是有序的。
指针位置上的元素依次与前面的元素比较#xff0c;当遇到小于自己的数或右边已经没有元素时#xff0c;都停止比较#xff0c;开始下一轮。
生活…一、算法思想
给定一个无序数列模拟一个指针从第0位开始向后始终保持当前位置左边的数列是有序的。
指针位置上的元素依次与前面的元素比较当遇到小于自己的数或右边已经没有元素时都停止比较开始下一轮。
生活中类比扑克牌抓牌时抓到的牌会从依次向左比较并插入到左侧的有序数列中。 二、代码演示
public static void insertionSort(int[] arr) {if (arr null || arr.length 2) {return;}for (int i 1; i arr.length; i) {// 0 ~ i 做到有序for (int j i - 1; j 0 arr[j] arr[j 1]; j--) {SortUtil.swap(arr, j, j 1);}}
}
三、时间复杂度
插入排序每趟比较的停止条件是当前面没有元素或遇到了比自己小的数。
因此根据数列样本的不同执行结果肯定不同。对于最差样本——完全逆序的数列时间复杂度同冒泡和选择一样都是O(N^2)而对于本身就是正序的数列时间复杂度就是O(N)。
但是时间复杂度是以最差情况考虑的指标因此插入排序的时间复杂度是 O(N^2)但由于执行时间会随样本情况而改变因此它是不稳定的排序算法某些情况下要优于冒泡和选择。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89418.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!