insertsort.wmv
插入排序作為簡單排序的一種,可能是每個人天生就會的演算法(誰還沒打過撲克牌呢?),就想打撲克整牌的時候,將最小的牌一般會放在手中最左邊,一手牌就是個公升序排序的過程。直接貼演算法:
//插入排序演算法,公升序演算法
void insertsort(int* arr,int num)
}
帶上建立隨機數陣列,驗證演算法並輸入輸出的完整**如下:
#include #include #include //巨集定義
#define max 1000
#define min 0
#define arraylen 10
//函式宣告
int* generatearray(int num);
void insertsort(int* arr,int num);
void displayarray(int* arr,int num);
int main(void)
//插入排序演算法,公升序演算法
void insertsort(int* arr,int num)
}//生成max和min範圍內的包含num個元素的陣列
int* generatearray(int num)
}
使用者定義的比較函式示例:
//函式宣告
int ascend(int* a,int* b); //公升序排序時使用的比較函式
int descend(int* a,int* b); //降序排序時使用的比較函式
//函式定義
//公升序排序時使用的比較函式
int ascend(int* a,int* b)
//降序排序時使用的比較函式
int descend(int* a,int* b)
到這裡可能會想到c語言標準庫自帶的qsort函式,上面使用函式指標呼叫外部自定義的比較函式來決定排序的是公升序還是降序,思路就**於c標準庫的qsort函式。快排序實在太經典了,c標準庫封裝了這個函式,除了能實現數字型別的排序,還可以實現字串排序。 資料結構與演算法 插入排序
將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料 插入排序分為兩種 直接插入排序和希爾排序 插入排序與打撲克時整理手上的牌非常類似。摸來的第1張牌無須整理,此後每次從桌上的牌 無序區 中摸最上面的1張並插入左手的牌 有序區 中正確的位置上。為了找到這個正確的位置,須自左向...
演算法與資料結構 插入排序
例如 給定乙個無序陣列int arr n代表集合陣列的長度,給出乙個演算法將陣列arr按照從小到大的順序進行排列。插入排序 看當前位置i的值是否比它前乙個數小,如果小就與前面的數交換位置。public static void insertionsort int arr,int n public st...
資料結構與演算法 插入排序
一 排序的相關概念 1 排序 將任意序列的資料元素,重新排列成按關鍵字有序 遞增有序或遞減有序 的序列過程。2 穩定性 若在排序過程中,序列的兩個關鍵字值相同的記錄,在排序結束後,相對位置不發生改變,則稱所用的排序方法為穩定的。3 排序方法的兩個效能指標 時間複雜度和空間複雜度。二 插入排序 1 基...