很多排序算法 可能你當時看完還記得,但是時間長了就會忘記, 我現在在這裏 記錄一下 ,供大家共同討論。
首先介紹最直接 最簡單的 ,直接插入排序算法:
這種算法思想比較簡單,就是從第二元素開始,依次往後挪動, 每一個元素與前面的元素逐個比較,一旦找到了比自己大的元素 或者相等的元素,那麼ok 直接插進去。 如此循環 直到列表遍歷完畢。
下一節回顧,講一下比這個更快的 折半插入排序。
這是一個簡單的 直接插入排序,如果有什麼問題, 或者說有效率方面可以加快的,歡迎大家更正,批評,討論。
也可以加羣C語言/C++/STL/linux/MFC/WTL 77278127 參與討論。
template <typename T>
void sort(T *temp, int len)
{
for (int i = 1; i < len; i++)
{
if (*(temp + i) > *(temp + i - 1))
{
continue;
}
for (int j = 0; j < i; j ++)
{
if (*(temp + j) > *(temp + i))
{
T t = (*(temp + i) );
memcpy(temp + j + 1, temp + j, sizeof(T) * (i - j));
*(temp + j) = t;
break;
}
}
}
}
int main(int argc, char* argv[])
{
int src[10] = {3, 9, 4, 5, 1, 45, 6, 8, 7, 7};
sort(src, 10);
for (int i = 0; i < 10; i++)
{
printf("%d ", src[i]);
}
return 0;
}