基本概念這了就不浪費時間解釋了,這四種都是很簡單的排序方式,本專欄后續(xù)文章會出歸并排序,計數(shù)排序,快速排序,堆排序,桶排序等排序算法,今天這篇文章中給出選擇排序,冒泡排序,插入排序和希爾排序的實現(xiàn);文章來源:http://www.zghlxwxcb.cn/news/detail-606015.html
選擇排序
void SelectSort(int* pArr, int nCount)
{
for (size_t i = 0; i < nCount - 1 ; i++) {
int nMinIndex = i ;
for (size_t j = i + 1; j < nCount; j++) {
if (pArr[j] < pArr[nMinIndex]) {
nMinIndex = j;
}
}
if (nMinIndex != i) {
swap(&pArr[i], &pArr[nMinIndex]);
}
}
}
冒泡排序
void InsertSort(int * pArr, int nCount)
{
for (size_t i = 1; i < nCount; i++) {
int Value = pArr[i];
int nIndex = i - 1;
while (nIndex >= 0 && pArr[nIndex] > Value) {
pArr[nIndex + 1] = pArr[nIndex--];
}
pArr[nIndex + 1] = Value;
}
}
插入排序
void InsertSort(int * pArr, int nCount)
{
for (size_t i = 1; i < nCount; i++) {
int Value = pArr[i];
int nIndex = i - 1;
while (nIndex >= 0 && pArr[nIndex] > Value) {
pArr[nIndex + 1] = pArr[nIndex--];
}
pArr[nIndex + 1] = Value;
}
}
希爾排序
void ShellSort(int * pArr, int nCount)
{
int Interval = nCount / 2;
while (Interval > 0) {
for (size_t i = 1; i < nCount; i += Interval) {
int Value = pArr[i];
int nIndex = i - Interval;
while (nIndex >= 0 && pArr[nIndex] > Value) {
pArr[nIndex + Interval] = pArr[nIndex];
nIndex -= Interval;
}
pArr[nIndex + Interval] = Value;
}
Interval /= 2;
}
}
如果發(fā)現(xiàn)文章中有錯誤,還請大家指出來,我會非常虛心地學(xué)習(xí),我們一起進步?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-606015.html
到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)與算法】排序算法(選擇排序,冒泡排序,插入排序,希爾排序)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!