各種排序算法的實現-1(直接插入排序)

     很多排序算法 可能你當時看完還記得,但是時間長了就會忘記, 我現在在這裏 記錄一下 ,供大家共同討論。

       首先介紹最直接 最簡單的 ,直接插入排序算法:

             這種算法思想比較簡單,就是從第二元素開始,依次往後挪動, 每一個元素與前面的元素逐個比較,一旦找到了比自己大的元素 或者相等的元素,那麼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;
}
          


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章