java數(shù)據(jù)結(jié)構(gòu)之插入排序
插入排序就是把當(dāng)前待排序的元素插入到一個已經(jīng)排好序的列表里面。 一個非常形象的例子就是右手抓取一張撲克牌,并把它插入左手拿著的排好序的撲克里面。
插入排序的最壞運行時間是O(n2), 所以并不是最優(yōu)的排序算法。
如果輸入數(shù)組已經(jīng)是排好序的話,插入排序出現(xiàn)最佳情況,其運行時間是輸入規(guī)模的一個線性函數(shù)。
如果輸入數(shù)組是逆序排列的,將出現(xiàn)最壞情況。平均情況與最壞情況一樣,其時間代價是Θ(n2)。
簡單例子:
public class Demo6 {
public static void main(String[] args) {
//定義一個整型數(shù)組
int[] nums = new int[]{4,3,-1,9,2,1,8,0,6};
//打印沒有進行排序的數(shù)組
System.out.println("沒有排序之前的結(jié)果:" + Arrays.toString(nums));
for(int index=0; index<nums.length; index++) {
//獲得需要插入的數(shù)值
int key = nums[index];
//取得下標(biāo)值
int position = index;
/循環(huán)比較之前排序好的數(shù)據(jù),找到合適的地方插入
while(position >0 && nums[position-1] > key) {
nums[position] = nums[position-1];
position--;
}
nums[position] = key;
}
//打印排序后的結(jié)果
System.out.println("排序后的結(jié)果:" + Arrays.toString(nums));
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA最新激活碼2021(IDEA2020.3.2最新永久激活方法)
這篇文章主要介紹了IDEA最新激活碼2021(IDEA2020.3.2最新永久激活方法),本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
springBoot 打war包 程序包com.sun.istack.internal不存在的問題及解決方案
這篇文章主要介紹了springBoot 打war包 程序包com.sun.istack.internal不存在的問題及解決方案,親測試過可以,需要的朋友可以參考下2018-07-07
SpringBoot或SpringAI對接DeepSeek大模型的詳細步驟
這篇文章主要介紹了DeepSeek智能助手的使用方法和步驟,包括引入庫、配置環(huán)境變量和配置,文章詳細描述了流式請求和非流式請求的實現(xiàn)方式,需要的朋友可以參考下2025-02-02
SpringBoot啟動后的初始化數(shù)據(jù)加載原理解析與實戰(zhàn)
本文主要圍繞?Spring?Boot?啟動后的初始化數(shù)據(jù)加載展開,介紹了初始化任務(wù)的基本需求,包括全局配置加載、數(shù)據(jù)庫表初始化等,闡述了多種初始化加載方式,分析了它們的優(yōu)缺點,需要的朋友可以參考下2024-11-11
如何解決Spring的UnsatisfiedDependencyException異常問題
這篇文章主要介紹了如何解決Spring的UnsatisfiedDependencyException異常問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04

