直接插入排序(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 ...