排序算法是C語言中最基本的,也是經常用到的,在面試的時候更是經常提到的,今天聊聊直接插入排序。
1.什麼是插入排序法?
有一個已經有序的數據序列,要求在這個已經排好的數據序列中插入一個數,但要求插入後此數據序列仍然有序,此時就要用到插入排序了。插入排序的基本操作就是將一個數據插入到已經排好序的有序數據中,從而得到一個新的、個數加一的有序數據。
2.使用場景以及複雜度。
直接插入算法適用於少量數據的排序,時間複雜度為O(n^2),是穩定的排序方法。
3.基本思想
插入算法把要排序的數組分成兩部分:第一部分包含了這個數組的所有元素,但將最後一個元素除外(讓數組多一個空間才有插入的位置),而第二部分就只包含這一個元素(即待插入元素)。在第一部分排序完成後,再將這個最後元素插入到已排好序的第一部分中。
4.代碼實現:
①數據結構部分:
②正序算法:
③逆序算法:
④main函數中,初始化數據後對其算法的調用:
⑤實例:
我們初始化數據如下:
算法結果如下:
每天進步一點點,每天消化一點點,如果你有更好的想法,歡迎一起交流,如果這篇文章對你有所幫助,點個贊吧。
相關推薦
'算法一看就懂之「 遞歸 」'
"之前的文章咱們已經聊過了「 數組和鏈表 」、「 堆棧 」和「 隊列 」,今天咱們來看看「 遞歸 」,當然「 遞歸 」並不是一種數據結構,它是很多算法都使用的一種編程方法。它太普遍了,並且用它來解決問題非常的優雅,但它又不是那麼容易弄懂,所以我特意用一篇文章來介紹它。一、「...
'我的全棧之路-C語言基礎之C語言概述'
"1.1 信息技術發展趨勢目前信息技術主要經歷了互聯網、移動互聯網以及以大數據、雲計算、物聯網、人工智能區塊為代表的新興技術三個階段。互聯網互聯網自從20世紀90年代逐漸興起,主要是通過網絡連接了世界各地的PC機,筆記本以及背後提供數據服務的大型服務器集群。其中絕大多數PC...
'大數階乘的位數C語言怎麼計算大數階乘的結果'
"#include <cstdio>#include <cmath>#define pi 3.14159265#define e 2.718281828int main(){int n,num;//所求為n!的位數,num為位數scanf("%d",...
C語言
2019-08-20
'洗牌算法詳解:你會排序,但你會打亂嗎?'
"算法與數據結構 labuladong , 作者 labuladong預計閱讀時間: 8 分鐘我知道大家會各種花式排序,但是如果叫你打亂一個數組,你是否能做到胸有成竹?即便你拍腦袋想出一個算法,怎麼證明你的算法就是正確的呢?亂序算法不像排序算法,結果唯一可以很容易檢驗,因...
【數據結構與算法】面試之鏈表問題集錦
【導讀】鏈表問題在面試過程中也是很重要也很基礎的一部分,鏈表本身很靈活,很考查編程功底,所以是很值得考的地方。我將複習過程中覺得比較好的鏈表問題整理了下。...
單片機常用的14個C語言算法,需熟記於心!
算法(Algorithm):計算機解題的基本思想方法和步驟。算法的描述:是對要解決一個問題或要完成一項任務所採取的方法和步驟的描述,包括需要什麼數據(輸入...
C語言雙指針算法的常見應用,小白看完原理就會用,炫耀實力首選
雙指針原理所謂雙指針,指的是在遍歷對象的過程中,不是普通的使用單個指針進行訪問,而是使用兩個相同方向或者相反方向的指針進行掃描,從而達到相應的目的。 換...
C語言中實現邊沿函數算法及應用,這是拋棄PLC留下的痛!
❤本原創文章基於實踐經驗,提供嚴謹可靠的設計原理及思路。後續準備穿插一些有關單片機應用C語言編程技巧的文章,那麼本期講解邊沿信號的應用。很多從事PLC編程...
十大經典排序算法動畫,看我就夠了!
排序算法是《數據結構與算法》中最基本的算法之一。排序算法可以分為內部排序和外部排序。內部排序是數據記錄在內存中進行排序。而外部排序是因排序的數據很大,一次...
推薦中...