码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法总结

时间:2014-11-19 01:41:36      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:算法   快速排序   选择排序   冒泡排序   

1 冒泡排序:

void BubbleeSort(int*p,int len,SORT_TYPE type = SORT_ASC)
	{
		
		//冒泡方式二:当某一次遍历没有发生任务数据交互时,说明已经排序好了
		bool flag = true;
		int k = len;
		while (flag)
		{
			flag = false;
			for(int j=0 ; j<k-1 ; j++)
			{
				if (p[j] > p[j+1])
				{
					swap(p+j,p+j+1);
					flag = true;
				}
			}
	}

2、快速排序:

	void QuickSort(int*a, int nLeft, int nRight)
	{
		if(nLeft > nRight) return;

		int temp = a[nLeft];
		int i = nLeft;
		int j = nRight;

		while (i < j)
		{
			//首先从右边找到一个比temp小的数
			while(a[j]>=temp && j>i)
				j--;
			//从左边边找到一个比temp大的数
			while(a[i]<=temp && j>i)
				i++;
			//交换找到的两个数据
			//交换两个数在数组中的位置                 
			swap(a+i,a+j); 
		}
		//print(a,10);
		//最终将基准数归位   
		swap(a+nLeft,a+i);
		QuickSort(a,nLeft,i-1);
		QuickSort(a,i+1,nRight);
	}

3、插入排序

          void InsertSort(int*a, int nLeft, int nRight)	{
		for(int i=1 ; i< len ; i++)
		{
			if(a[i] < a[i-1])
			{
			 	int j = i-1;
				int temp = a[i];

				while(temp < a[j])
				{
					a[j+1] = a[j];
					j--;
				}
				a[j+1] = temp;
			}
			//print(a,len);
		}
	}

4、选择排序

	void SelectSort(int*a,int len,SORT_TYPE type = SORT_ASC)
	{
		for(int i=0; i<len;i++)
		{
			int temp = a[i];
			int index = i;
			for(int j=i+1; j <len;j++)
			{
				if(a[j] < a[index])
				{
					index = j;
				}
			}
			swap(a+i,a+index);
		}
		//print(a,len);
	}



 

排序算法总结

标签:算法   快速排序   选择排序   冒泡排序   

原文地址:http://blog.csdn.net/oshirdey/article/details/41251585

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!