国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)

?? 博客內(nèi)容:【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)

?? 作??者:陳大大陳

??所屬專欄:數(shù)據(jù)結(jié)構(gòu)筆記

?? 個(gè)人簡介:一個(gè)正在努力學(xué)技術(shù)的準(zhǔn)前端,專注基礎(chǔ)和實(shí)戰(zhàn)分享 ,歡迎私信!

?? 歡迎大家:這里是CSDN,我總結(jié)知識和寫筆記的地方,喜歡的話請三連,有問題請私信 ?? ?? ??

目錄

前言引入

?插入排序的原理

插入排序源碼

詳細(xì)實(shí)例過程圖解

本章小結(jié)

前言引入

??插入排序是一種非常有意思且比較高效的排序方法,同時(shí)插入排序是希爾排序的基礎(chǔ)?。

我預(yù)備下一篇博客講解希爾排序,這一篇就先講一下插入排序。

在生活中,這種排序方法也隨處可見。

例如,我們在玩撲克牌時(shí),總會(huì)按照插入排序的方法調(diào)整撲克牌的位置。?

【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)

玩撲克牌怎么會(huì)用到插入排序的方法呢?

當(dāng)我們拿起第二張牌時(shí),就會(huì)下意識的與第一張牌進(jìn)行比較,如果比第一張牌小,我們就會(huì)將牌插入至第一張牌的左邊,反之就插入至右邊。

這樣邊插入邊排序,就是插入排序,插入后的序列依舊是有序的。

大家先看一下下面的原理和代碼,然后再看實(shí)例圖可能會(huì)比較好。

?插入排序的原理

當(dāng)插入第i(i>=1)個(gè)元素時(shí),前面的array[0],array[1],…,array[i-1]已經(jīng)排好序,此時(shí)用array[i]的排序碼與 array[i-1],array[i-2],…的排序碼順序進(jìn)行比較,找到插入位置即將array[i]插入,原來位置上的元素順序后移。?
把待排序的記錄按其關(guān)鍵碼值的大小逐個(gè)插入到一個(gè)已經(jīng)排好序的有序序列中,直到所有的記錄插入完為 止,我們就可以得到一個(gè)新的有序序列。

我們將原數(shù)組空間看成兩個(gè)部分,前邊是有序部分,后邊是無序部分,有序部分我們默認(rèn)為它就已經(jīng)是排好序的,在尾部新加入的元素有可能會(huì)導(dǎo)致整個(gè)有序數(shù)組變得無序,因此我們需要進(jìn)行調(diào)整。

調(diào)整方式就是將新加入的元素進(jìn)行對比并往前移動(dòng),新加入元素和它前邊的元素進(jìn)行對比,如果它比它前邊的元素小,則二者互換位置,不斷重復(fù)這個(gè)過程,直到它前邊的元素小于它才會(huì)停止,這樣一來,他就仍然是有序數(shù)組。

插入排序源碼

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void InsertSort(int* a, int n)
{
	int tmp;
	int end;
	for (int i = 1; i < n; i++)
	{
		end = i - 1;
		tmp = a[i];
		while (end >= 0)
		{
			if (a[end] > tmp)
			{
				a[end + 1] = a[end];
				end--;
			}
			else
			{
				break;
			}
		}
		a[end + 1] = tmp;
	}
}
int main()
{
	int a[] = { 45,67,89,12,34,5,6,8,1,2,67,99,55 };
	InsertSort(a, sizeof(a) / sizeof(a[0]));
	for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++)
	{
		printf("%d ", a[i]);
	}
	return 0;
}
/*{ 45,45,89,12,34,5,6,8,1,2,67,99,55 };*/

運(yùn)行結(jié)果

【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)

詳細(xì)實(shí)例過程圖解

下面用一組實(shí)例來解釋。
【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)

就按這組數(shù)據(jù)為例,此時(shí)end處的值不大于i處的值,不用進(jìn)入循環(huán),?a[end + 1] = tmp;不造成影響

【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)

第二次,同理,i++繼續(xù)往后走。

【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)第三次,這次不一樣了!a[end]>a[i],也就是a[end]大于tmp了,進(jìn)入循環(huán)。

【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)

循環(huán)一次,完成?a[end + 1] = a[end];??end--;a[end+1]=tmp;的操作。

此時(shí)end值為1,大于0,循環(huán)繼續(xù)。

【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)

循環(huán)兩次,完成?a[end + 1] = a[end];??end--;a[end+1]=tmp;的操作。

此時(shí)end值為0,等于0,循環(huán)繼續(xù)。

?【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)

循環(huán)三次,?完成?a[end + 1] = a[end];??end--;a[end+1]=tmp;的操作。

此時(shí)end值為-1,小于0,循環(huán)結(jié)束。

第一次排序結(jié)束,下面的排序也就是比葫蘆畫瓢了,這里我就不列舉了。

本章小結(jié)

直接插入排序的特性總結(jié):
1. 元素集合越接近有序,直接插入排序算法的時(shí)間效率越高
2. 時(shí)間復(fù)雜度:O(N^2)
3. 空間復(fù)雜度:O(1),是一種穩(wěn)定的排序算法
4. 是否穩(wěn)定:穩(wěn)定

下一篇更新希爾排序,博客里如果有問題的話,還請大佬私信我,我會(huì)修改的。

有問題的話請私信問我,我看到就會(huì)回的。?文章來源地址http://www.zghlxwxcb.cn/news/detail-467002.html

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】插入排序詳細(xì)圖解(一看就懂)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)】排序之插入排序(直接插入排序||希爾排序)

    【數(shù)據(jù)結(jié)構(gòu)】排序之插入排序(直接插入排序||希爾排序)

    在生活中處處可見排序,當(dāng)我們打開京東或者其它購物平臺時(shí),搜索物品,它會(huì)有一定的排序。 這次就來分享的博客與排序有關(guān)。 正文開始。 排序 :所謂排序,就是使一串記錄,按照其中的某個(gè)或某些的大小,遞增或遞減的排列起來的操作。 穩(wěn)定性 :假定在待排序

    2024年01月16日
    瀏覽(26)
  • 【數(shù)據(jù)結(jié)構(gòu) — 排序 — 插入排序】

    【數(shù)據(jù)結(jié)構(gòu) — 排序 — 插入排序】

    1.1.1排序的概念 排序: 所謂排序,就是使一串記錄,按照其中的某個(gè)或某些的大小,遞增或遞減的排列起來的操作。 穩(wěn)定性: 假定在待排序的記錄序列中,存在多個(gè)具有相同的的記錄,若經(jīng)過排序,這些記錄的相對次序保持不變,即在原序列中,r[i]=r[j],且

    2024年02月05日
    瀏覽(26)
  • 【數(shù)據(jù)結(jié)構(gòu)】排序之插入排序

    【數(shù)據(jù)結(jié)構(gòu)】排序之插入排序

    在生活中處處可見排序,當(dāng)我們打開京東或者其它購物平臺時(shí),搜索物品,它會(huì)有一定的排序。 這次就來分享的博客與排序有關(guān)。 正文開始。 排序 :所謂排序,就是使一串記錄,按照其中的某個(gè)或某些的大小,遞增或遞減的排列起來的操作。 穩(wěn)定性 :假定在待排序

    2024年02月03日
    瀏覽(19)
  • 【數(shù)據(jù)結(jié)構(gòu)—數(shù)據(jù)—插入排序】

    【數(shù)據(jù)結(jié)構(gòu)—數(shù)據(jù)—插入排序】

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 文章目錄 前言 一、插入排序 1.1基本思想: 1.2直接插入排序: 1.3直接插入排序的代碼實(shí)現(xiàn) 二、希爾排序( 縮小增量排序 ) 2.1算法講解 2.2希爾排序的代碼實(shí)現(xiàn) 總結(jié) 世上有兩種耀眼的光芒,一種是正在升

    2024年02月02日
    瀏覽(26)
  • 【數(shù)據(jù)結(jié)構(gòu)】常見排序算法——常見排序介紹、插入排序、直接插入排序、希爾排序

    【數(shù)據(jù)結(jié)構(gòu)】常見排序算法——常見排序介紹、插入排序、直接插入排序、希爾排序

    ??在計(jì)算機(jī)科學(xué)中,排序是將一組數(shù)據(jù)按照指定的順序排列的過程。排序算法由于執(zhí)行效率的不同可以分為多種不同的算法。 ??通常情況下,排序算法可以分為兩類,即 內(nèi)部排序和外部排序 。內(nèi)部排序是指數(shù)據(jù)全部加載到內(nèi)存中進(jìn)行排序,適用于數(shù)據(jù)量較小的情況,而

    2024年02月08日
    瀏覽(34)
  • 【數(shù)據(jù)結(jié)構(gòu)】圖解八大排序(下)

    【數(shù)據(jù)結(jié)構(gòu)】圖解八大排序(下)

    在上一篇文章中,我們已經(jīng)學(xué)習(xí)了五種排序算法,還沒看過的小伙伴可以去看一下:傳送門 今天要講的是八大排序中剩下的三種,這三種排序算法用的是非常多的,需要好好掌握。 下面介紹的排序算法均以排升序?yàn)槔?快排的思想 是分治,就是選定一個(gè)基準(zhǔn)值,使這個(gè)值的

    2024年02月17日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)】圖解八大排序(上)

    【數(shù)據(jù)結(jié)構(gòu)】圖解八大排序(上)

    生活中,我們經(jīng)常能看到排序的應(yīng)用。例如,我們在網(wǎng)購商品的時(shí)候,經(jīng)常按銷量從高到低排序。 常見的排序算法有: 先來介紹一下關(guān)于排序算法的幾個(gè)概念。 穩(wěn)定性 :相等的元素排序之后相對次序不變 內(nèi)部排序 :數(shù)據(jù)全在內(nèi)存中的排序 外部排序 :數(shù)據(jù)太多不能同時(shí)在

    2023年04月27日
    瀏覽(19)
  • 【數(shù)據(jù)結(jié)構(gòu)】排序(1) ——插入排序 & 希爾排序

    【數(shù)據(jù)結(jié)構(gòu)】排序(1) ——插入排序 & 希爾排序

    ? ? ? ? ? ? ? ? ? ? ? ? ? 目錄 一. 直接插入排序 ?基本思想 ?代碼實(shí)現(xiàn) ?時(shí)間和空間復(fù)雜度 ?穩(wěn)定性 二. 希爾排序 ?基本思想 ?代碼實(shí)現(xiàn)?? ? ?時(shí)間和空間復(fù)雜度 ?穩(wěn)定性 ? ? ? ? ? ? 把待排序的記錄按其關(guān)鍵碼值的大小依次插入到一個(gè)已經(jīng)排好序的有序序列中,直到

    2024年02月07日
    瀏覽(26)
  • 數(shù)據(jù)結(jié)構(gòu)——插入排序與希爾排序

    數(shù)據(jù)結(jié)構(gòu)——插入排序與希爾排序

    ??個(gè)人主頁:_麥麥_ ??今日名言:喜你成疾,藥石無醫(yī)?!睹倒迮c鹿》 ? ? ? ? 在本篇文章,我們將為小伙伴們進(jìn)行排序概念的基本講解并具體講解其中的兩種基礎(chǔ)排序: 插入排序和希爾排序 ,希望小伙伴們能夠從中有所收獲?。。?1.1排序的概念 排序 :所謂排序,

    2023年04月09日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】排序:插入排序與希爾排序詳解

    【數(shù)據(jù)結(jié)構(gòu)】排序:插入排序與希爾排序詳解

    本章開始就要分享一些常用的排序方法,我們的日常生活中很多地方都要使用排序,比如電商平臺可以按照你的需求進(jìn)行排序,或者是你想了解大學(xué)的綜合排名時(shí) ? ?我們之前也學(xué)到過一些簡單的排序比如冒泡排序,雖然他在時(shí)間復(fù)雜度上可以說是依托答辯,但是作為排序算

    2024年02月13日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包