首页 > 代码库 > 排序算法总结

排序算法总结

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);	}



 

排序算法总结