(1)直接插入排序
void insertsort(int *data, int len)
}}
(2)氣泡排序
void bubblesort(int *data, int len)
}}
(3)選擇排序
void selectsort(int *data, int len)
swap(data[i], data[max]);
}}
(4)希爾排序:將序列分成子串行,然後對子序列分別進行插入排序
void shellsort(int *data, int len)
} gap /= 2;
}}
(5)快速排序
int partition(int *data, int low, int high)
return low;
}void quicksort(int *data, int low, int high)
}
(6)堆排序
//堆排序 : 將要排序的n個數看作順序儲存的二叉樹,
//首先將其建成大頂堆
//然後將堆頂元素和最後乙個元素交換,將前n-1個元素調整為大頂堆
//再將堆頂元素和倒數第二個元素交換,將前n-2個元素調整為大頂堆
//如此迴圈。
void adjustheap(int *data, int len, int k) }}
void buildheap(int *data, int len)
}void heapsort(int *data, int len)
}
(7)歸併排序
void merge(int *data, int begin, int mid, int end)
else
} while(i <= mid)
while(j <= end)
for(i = begin, k = 0; k < n; ++i, ++k)
delete sortdata;
}void mergesort(int *data, int begin, int end)
}
(8)基數排序
#define radix_num 10
#define key_num 3
int getnuminpos(int num, int pos)
return num%10;
}void radixsort(int *data, int n)
for(int i = 1; i <= key_num;++i)
//分配
for(int j = 0; j < n; ++j)
//收集
for(int j = 0, k = 0; j < radix_num; ++j)
} }for(int i = 0; i < radix_num; ++i)
}
各種排序演算法的時間複雜度和空間複雜度對比:
八大排序演算法的C 實現
include stdafx.h include include include include using namespace std void print vectornumv 輸出陣列 numv.at j 1 v return numv vectorselectionsort vectornu...
八大排序演算法
1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...
八大排序演算法
一 概述 八大排序演算法包括 1 插入排序之直接插入排序 straight insertion sort 2 插入排序之希爾排序 shells sort 3 選擇排序之簡單選擇排序 selection sort 4 選擇排序之堆排序 heap sort 5 交換排序之氣泡排序 bubble sort...