八大排序演算法自我實現
阿新 • • 發佈:2019-01-29
下面是的程式碼都是C++ 實現的
1.插入排序—直接插入排序(Straight Insertion Sort)
#pragma once
#include "JudgmentCondition.h"
void InsertionSort(int *arr, int arrsize, bool sortMethod)
{
int i = 0;
functionPointer fun = retfun(sortMethod);
for (int i = 1; i < arrsize; ++i)
{
int sentryPost = arr[i];
for (int j = 0; j < i; ++j)
{
if (fun(arr[j], sentryPost))
{
exchange(sentryPost, arr[j]);
}
}
exchange(arr[i], sentryPost);
}
}
- 插入排序—希爾排序(Shell`s Sort)
- 選擇排序—簡單選擇排序(Simple Selection Sort)
- 選擇排序—堆排序(Heap Sort)
- 交換排序—氣泡排序(Bubble Sort)
#pragma once
#include "JudgmentCondition.h"
void BubbleSort(int *arr, int arrsize, bool sortMethod)
{
bool isBreak;
int i = 0;
functionPointer fun = retfun(sortMethod);
while (true)
{
if (i >= arrsize - 1)
{
if (isBreak)
break;
i = 0 ;
isBreak = true;
}
if (fun(arr[i], arr[i + 1]))
{
exchange(arr[i], arr[i + 1]);
isBreak = false;
}
++i;
}
}
- 交換排序—快速排序(Quick Sort)
- 歸併排序(Merge Sort)
- 桶排序/基數排序(Radix Sort)
沒寫完。。。待完善。。