1. 程式人生 > >插入排序演算法C語言實現

插入排序演算法C語言實現

實現如下:

#include <stdio.h>
#include <stdlib.h>

#define SIZE 20

void insert_sort(int array[], const int size);
void printArray(int array[], const int size);

int main(int argc, char const *argv[])
{
    int array[SIZE];
    int count = 0;
    srand(time(NULL));
    for (count = 0; count < SIZE; count++) {
        array
[count] = rand() % SIZE + 1; } printArray(array, SIZE); insert_sort(array, SIZE); printArray(array, SIZE); return 0; } void insert_sort(int array[], const int size) { int j, k = 1, temp; for (k = 1; k < size; k++) { temp = array[k]; for (j = k - 1; j >= 0
&& array[j] > temp; j--) { array[j + 1] = array[j]; } array[j + 1] = temp; } } void printArray(int array[], const int size) { printf("The current array is:\n"); int count = 0; for (count = 0; count < size; count++) { printf("%d ", array
[count]); } printf("\n"); }

程式使用標準函式庫中函式rand產生SIZE個隨機數並對其進行插入排序。
插入排序為原地穩定的排序演算法,主要思想每次將一個數插入到已排序的陣列中去,其漸近確界為Θ(n2),計算過程見演算法導論第二章。

相關推薦

插入排序演算法C語言實現

實現如下: #include <stdio.h> #include <stdlib.h> #define SIZE 20 void insert_sort(int ar

插入排序C語言實現

插入排序是穩定排序,時間複雜度最低為O(n),最高為O(n^2),平均為O(n^2)。   插入排序是將陣列分為兩部分,一部分已經排好序,另一部分未排好序,每次從未排好序的部分取第一個元素插入到已經排好序的部分正確的位置,如此迴圈n-1次。 就好像你手裡有十張牌,左手有一張,右手有九張。每次從

氣泡排序演算法C語言實現

第一部分   排序方法介紹 常用的排序方法:氣泡排序,選擇排序,插入排序及希爾排序等。        氣泡排序是常用的一種排序方法,其基本方法就是逐次比較。即一次比較兩個數,若它們的順序錯誤,則交換;重複進行,知道沒有需要交換為止。 以升序排序為例:        1.

(資料結構排序的實驗四)快速,冒泡,簡單選擇,直接插入排序c語言實現!!

<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18p

九大排序演算法-C語言實現及詳解

概述 排序有內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 我們這裡說說八大排序就是內部排序。     當n較大,則應採用時間複雜度為O(nlog2n)的排序方法:快

直接插入排序c語言實現

#include <stdio.h> #define T 1 #define F 0 #define MAXSIZE 10 //要排序陣列個數的最大值 typedef struct {

快速排序演算法 C語言實現

快速排序演算法(QuickSort) 1.演算法思想 快速排序是一種劃分交換排序,採用了分治策略,通常稱為分治法。 (1)分治法的基本思想 將原問題分解成若干個規模更小但結構與原問題相似的子問題;遞迴地解這些子問題,然後將這些子問題的解組合成原問題的解。 (2)快速排序的基

排序演算法插入排序及其C語言程式碼實現

概述 一個插入排序是另一種簡單排序,它的思路是:每次從未排好的序列中選出第一個元素插入到已排好的序列中。它的演算法步驟可以大致歸納如下: 1. 從未排好的序列中拿出首元素,並把它賦值給temp變數; 2. 從排好的序列中,依次與temp進行比較,如果元素比temp大,則將元素

排序演算法c語言描述---直接插入排序

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

有趣的演算法(七):3分鐘看懂希爾排序C語言實現

在上一次的演算法討論中,我們一起學習了直接插入排序。它的原理就是把前i個長度的序列變成有序序列,然後迴圈迭代,直至整個序列都變為有序的。但是說來說去它還是一個時間複雜度為(n^2)的演算法,難道就不能再進一步把時間複雜度降低一階麼?確實,以上幾種演算法相對於之前的O(n^2)

資料結構排序演算法之歸併排序c語言實現

博主身為大二萌新,第一次學習資料結構,自學到排序的時候,對於書上各種各樣的排序演算法頓覺眼花繚亂,便花了很長的時間盡力把每一個演算法都看懂,但限於水平有限,可能還是理解較淺,於是便將它們逐個地整理實現出來,以便加深理解。 歸併排序就是通過將一個具有n個key記錄的線性表,看

八大排序演算法之一直接插入排序C語言

概述 排序有內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 我們這裡說說八大排序就是內部排序。     當n較大,則應採用時間複雜度為O(nlog2n)的排序方法:快

排序演算法-合併排序C語言實現

都說“演算法是程式的靈魂”,而排序是計算機儲存控制方面不能沒有的操作。它在資料的存取,查詢搜尋,資料統計這些基礎資料操作方面有著重要的應用。所以排序演算法是必須是很有研究的。 這次,我學習的是-歸併排序演算法。據說該演算法是馮諾依曼發明的。這個排序演算法比起直

[演算法練習]堆排序C語言實現

#include <stdio.h> void heap_sort(); void max_heap(); void build_heap(); int LEFT(),RIGHT();

資料結構排序演算法之快速排序c語言實現

快排的原理就是通過一趟排序將待排記錄分割成獨立的兩部分,其中的一部分記錄的關鍵字均比另一部分記錄的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整個序列有序。這其中,可以使用遞迴呼叫某一關鍵函式的辦法來實現這樣的功能。 分割的方法就是,選取一個樞軸,將所有關鍵字比它

排序C語言實現

names 博客 鏈接 c語言實現 建立 ron 要求 clas [1] 之前的博客介紹介紹了數組的兩種排序算法:插入排序和歸並排序(採用遞歸),見鏈接http://blog.csdn.net/u013165521/article/detai

排序C語言實現

emp 定義 als ret std 冒泡 urn merge 結點 #include <stdio.h> #include <string.h>#include <ctype.h> #include <stdlib

歸並排序C語言實現

ngs 基本 merge 兩個 它的 efi 分別是 void rec 合並排序(MERGE SORT)是又一類不同的排序方法,合並的含義就是將兩個或兩個以上的有序數據序列合並成一個新的有序數據序列,因此它又叫歸並算法。 它的基本思想就是假

排序C語言實現

內部排序 利用 int 分治 arr 個數 size quic 外部排序 讀數據結構與算法分析 插入排序 核心:利用的是從位置0到位置P都是已排序的 所以從位置1開始排序,如果當前位置不對,則和前面元素反復交換重新排序 實現 void InsertionSort

排序演算法c語言描述---氣泡排序

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!