排序算法

1、冒泡排序

//将小元素冒泡到最前面
void BubbleSort1(int arr[],int len)
{
	for(int i=0;i<len;i++)
	{
		for(int j=i+1;j<len;j++)
		{
			if(arr[j]<arr[i])
				swap(arr[i],arr[j]);
		}
	}
}

//将大元素冒泡到最后面
void BubbleSort2(int arr[],int len)
{
	for(int i=0;i<len;i++)
	{
		for(int j=0;j<len-1;j++)
		{
			if(arr[j]>arr[j+1])
				swap(arr[j],arr[j+1]);
		}
	}
}

2、插入排序

//插入排序
void InsertSort(int arr[],int len)
{
	int temp,j;
	for(int i=1;i<len;++i)
	{
		if(arr[i-1] > arr[i])
		{
			temp = arr[i];
			for(j=i-1;j>=0 && arr[j]>temp;--j)
				arr[j+1]=arr[j];
			arr[j+1]=temp;
		}
	}
}

3、快速排序

参考文章:http://blog.csdn.net/morewindows/article/details/6684558

int partition(int *arr , int low , int high)  
{  
	int pivo = arr[low];//arr[low]是第一个坑
	while(low < high)  
	{  
		//从右向左找小于pivo的数来填充arr[low]
		while(low < high && arr[high] >= pivo)  
			--high;  
		arr[low] = arr[high];//将arr[high]填充arr[low],形成了新的坑arr[high]

		//从左向右找大于pivo的数来填充arr[high]
		while(low < high && arr[low] <= pivo)  
			++low;  
		arr[high] = arr[low];  //将arr[low]填充arr[high],形成了新的坑arr[low]
	} 
	//循环结束时,low==high,将pivo填充到这个坑中
	arr[low] = pivo;  
	return low;  
}  

// 快速排序  
void qsort(int *arr , int low , int high)  
{  
	if(low < high)  
	{  
		int pivo = partition(arr , low , high);  
		qsort(arr , low , pivo-1);  
		qsort(arr , pivo+1 , high);  
	}  
}  



你可能感兴趣的:(排序算法)