1 直接插入排序 插入排序

2021-10-02 16:40:27 字數 2661 閱讀 8968

直接插入排序(straight insertion sort)

是一種最簡單的排序方法,它的基本操作是將乙個記錄插入到已排好序的有序表中,從而得到乙個新的、記錄數增1的有序表。

排序過程如下:(參考自嚴蔚敏的資料結構(c語言版))

思想是第一次將第乙個元素當作有序組,每次後面的元素插入到有序組中使其任然有序,不斷的擴大有序組,當所有元素都插入完成後,那麼整體陣列就是有序的

直接插入排序的方法

void

insertsort_

(data_type* ar,

int left,

int right)

}}

以上**是插入排序的核心**

data_type是int

#define data_type int
功能是對陣列ar,下標位置[lefe, right]中的元素運用直接排序的思想進行排序

直接插入排序的標頭檔案,以下是對順序表的直接插入排序方法及驗證**

//插入排序

void

insertsort_

(data_type* ar,

int left,

int right)

;void

insertsort

(seqlist* sq)

void

insertsort_

(data_type* ar,

int left,

int right)

}}

資料結構順序表的標頭檔案
#pragma once

#define _crt_secure_no_warnings

#include

#include

#include

#include

#include

#include

#define data_type int

#define default_capacity 9

typedef

struct seqlist

seqlist;

//建立並初始化順序表(對數器)

void

creatsequencelistwithlogaritmmachine

(seqlist* sq,

int length)

}//判斷兩個順序表內容相同的方法

bool isequal_

(int

* ar1,

int sz1,

int* ar2,

int sz2)

;bool isequal

(seqlist* sq1, seqlist* sq2)

bool isequal_

(int

* ar1,

int sz1,

int* ar2,

int sz2)

return true;

}//順序表拷貝的方法

void

seqlistcopy_

(data_type* ar1,

int sz1, data_type* ar2)

;void

seqlistcopy

(seqlist* sq1, seqlist* sq2)

void

seqlistcopy_

(data_type* ar1,

int sz1, data_type*

* ar2)

}void

swap

(data_type* a, data_type* b)

intcompare

(const

void

* a,

const

void

* b)

//絕對正確的排序方法

void

rightmethod_

(data_type* ar,

int left,

int right)

;void

rightmethod

(seqlist* sq)

void

rightmethod_

(data_type* ar,

int left,

int right)

void

_showseqlist

(data_type* arr,

int length)

;void

showseqlist

(const seqlist* sq)

void

_showseqlist

(data_type* arr,

int length)

主函式驗證直接插入排序正確
#include

"seqlist.h"

#include

"insertsort.h"

intmain()

}if(!succeed)

else

return0;

}

插入排序 1 直接插入排序

插入排序 插入排序的演算法思想是 在乙個有序 的元素序列中,不斷地將新元素插入到該已經有序的元素序列中的合適位置,直到所有元素都插入到合適位置則完成排序。直接插入排序 假設待排序的元素有n個,對應的元素分別是a1,a2,a3,a4.因為第乙個元素是有序的,所以從第二個元素開始,將a2與a1進行比較。...

插入排序 直接插入排序

直接插入排序演算法思想 將整個資料表分成左右兩個子表,其中左子表為有序表,右子表為無序表 整個排序過程就是將右子表中的元素逐個插入到左子表中,直到右子表為空,而左子表成為新的有序表。演算法過程分析 將待排序的元素存放在陣列r n 1 中,在初始狀態下,r 0 為監視哨,r 1 為有序區,r 2 r ...

插入排序 直接插入排序

一.插入排序的基本思想 將乙個記錄插入已排序好的有序表中,從而得到乙個新的記錄數加1的有序表。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。所謂的哨兵,就是即將插入的記錄。二.示例 如果碰見相等的元素,會被插到後面,所以,相等元素的前後順序沒有改變,插入排序是穩定的。三.演算法實現 public ...