C語言基本排序算法之插入排序與直接選擇排序實現方法
更新時間:2017年09月25日 09:00:10 作者:liyuxia713
這篇文章主要介紹了C語言基本排序算法之插入排序與直接選擇排序實現方法,結合具體實例形式分析了插入排序與直接選擇排序的定義、使用方法及相關注意事項,需要的朋友可以參考下
本文實例講述了C語言基本排序算法之插入排序與直接選擇排序實現方法。分享給大家供大家參考,具體如下:
聲明待排序元素類型
/*-------------------------- typedef.h 方便修改待排序元素類型 -------------------------------------*/ #ifndef TYPEDEF_H #define TYPEDEF_H typedef int T; #endif
插入排序:
/*--------------------------------------------------------------------------------------- Insertion_sort.h 直接插入排序 對以數組形式給出的元素排序 時間復雜度為(逆序數)N(N-1)/4 = O(N^2),并且在最壞情形下達到這個值 最好情形下運行N次,最壞情形下運行2+3+…+N ------------------------------------------------------------------------------------------------*/ #ifndef INSERTION_SORT_H #define INSERTION_SORT_H #include "typedef.h" //直接插入排序 void Insertion_sort(T *a, int n) { for(int i = 1; i != n; ++i) { T temp = a[i]; int j = i - 1; for(; j >= 0 && temp < a[j]; --j ) a[j + 1] = a[j]; a[j + 1] = temp; } } #endif
直接選擇排序:
/*---------------------------------------------- DirectSelection_sort.h 直接選擇排序 時間復雜度O(N^2) --------------------------------------------------------*/ #ifndef DIRECTSELECTION_SORT_H #define DIRECTSELECTION_SORT_H #include "typedef.h" #include "swap.h" //直接選擇法排序 void DirectSelection_sort(T*a, int n) { for(int i = 0; i != n; ++i) { int k = i; for(int j = i; j != n; ++j) if(a[j] < a[k]) k = j; swap(a[k],a[i]); } } #endif
希望本文所述對大家C語言程序設計有所幫助。