插入排序就是把當(dāng)前待排序的元素插入到一個已經(jīng)排好序的列表里面。 一個非常形象的例子就是右手抓取一張撲克牌,并把它插入左手拿著的排好序的撲克里面。
為潮州等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及潮州網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、潮州網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!插入排序的最壞運行時間是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}; //打印沒有進(jìn)行排序的數(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)); } }
文章名稱:java數(shù)據(jù)結(jié)構(gòu)之插入排序-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://aaarwkj.com/article14/copcge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、做網(wǎng)站、全網(wǎng)營銷推廣、網(wǎng)站設(shè)計、網(wǎng)站排名、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)