插入排序(InsertionSort) -- C++实现


实现代码

// InsertionSort.h
#ifndef INSERTIONSORT_H
#define INSERTIONSORT_H

#include "Component.h"

namespace jay{

	template< typename T >
	void InsertionSort(T *input,int input_len )
	{
		for (int i=0;i<input_len;i++)
		{

			for (int j=i;j>0 && input[j] < input[j-1];j--)
			{
				// 交换值
                // 如果是十万以上级别的数据,请欠考虑不调用函数处理[inline无效?]
				ExchangeArrayElements<T>(input,j,j-1);
			}


		}
	}

};

#endif

测试代码

//main.cpp

#include <time.h>
#include<windows.h>

#include <iostream>
using namespace std;

#include "Component.h"
#include "InsertionSort.h"
using namespace jay;


int main(int argc, char* argv[])
{
	TimeCalculator timec;

	int iElentmentsCunt(0) ;
	cin>>iElentmentsCunt;
	int *testarray = new int[iElentmentsCunt];

	int iCount = 0;
	int p;
	while(cin>>p)
	{
		testarray[iCount] = p;
		iCount++;
	}

	PrintArray<int>(testarray,iCount,"排序前:");
	InsertionSort<int>(testarray,iCount);
	PrintArray<int>(testarray,iCount,"排序后:");

	delete []testarray;

	// 打印操作耗时
	timec.PrintTimeInfo();

}

 

暂无评论

注册用户登录后才能发表或者回复评论,请先登录 注册。