6种排序算法:冒泡、鸡尾酒、选择、插入、归并、快速

原创 2012年03月29日 13:09:59
#include <iostream>
using namespace std;
void BubbleSort(int* pData,int Count)//冒泡排序
{
	int iTemp,i,j;
	for (i = 1;i < Count;i++)
	{
		for (j = Count - 1;j >= i;j--)
		{
			if (pData[j] < pData[j-1])
			{
				iTemp = pData[j-1];
				pData[j-1]=pData[j];
				pData[j]=iTemp;
			}
		}
	}
}
void main()
{
	int i,data[] = {10,9,8,7,6,5,4};
	BubbleSort(data,7);
	for (i = 0;i<7;i++)
	{
		cout<<data[i]<<" ";
	}
	cout<<"\n";
}

#include <iostream>
using namespace std;
void Cocktail(int* arr, int size)//鸡尾酒排序
{
	int i,j,temp,tail = size - 1;
	for (i = 0;i<tail;)
	{
		for (j = tail;j > i;j--)
		{
			if(arr[j] < arr[j-1])
			{
				temp = arr[j];
				arr[j] = arr[j-1];
				arr[j-1] = temp;
			}
		}
		i++;
		for (j = i;j < tail;j++)
		{
			if (arr[j] > arr[j+1])
			{
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
		tail--;
	}
}
void main()
{
	int i,arr[] = {1,3,5,7,6,56,76,122,3};
	Cocktail(arr,sizeof(arr)/sizeof(int));
	for (i = 0;i<9;i++)
	{
		cout<<arr[i]<<" ";
	}
	cout<<"\n";
}

#include <iostream>
using namespace std;
void SelectSort(int* pData,int Count)//选择排序
{
	int i,j,iTemp,iPos;
	for (i = 0;i<Count-1;i++)
	{
		iTemp =pData[i];
		iPos = i;
		for(j=i+1;j<Count;j++)
		{
			if (pData[j]<iTemp)
			{
				iTemp = pData[j];
				iPos = j;
			}
		}
		pData[iPos] = pData[i];
		pData[i] = iTemp;
	}
}
void main()
{
	int i,data[] = {10,9,8,7,6,5,4};
	SelectSort(data,7);
	for (i=0;i<7;i++)
	{
		cout<<data[i]<<" ";
	}
	cout<<endl;
}

#include <iostream>
using namespace std;
void InsertSort(int* pData,int Count)//插入排序
{
	int i,iPos,iTemp;
	for (i=1;i<Count;i++)
	{
		iTemp = pData[i];
		iPos = i-1;
		while ((iPos>=0)&&(iTemp<pData[iPos]))
		{
			pData[iPos+1] =pData[iPos];
			iPos--;
		}
		pData[iPos+1] = iTemp;
	}
}
void main()
{
	int i,data[] = {10,9,8,7,6,5,4};
	InsertSort(data,7);
	for (i=0;i<7;i++)
	{
		cout<<data[i]<<" ";
	}
	cout<<"\n";
}

#include <iostream>
using namespace std; 
void merge(int *pData,int p,int q,int r)//归并排序
{
	int i,k;
	int begin1,end1,begin2,end2;
	int *temp=new int[r-p+1];
	begin1=p; 
	end1=q;
	begin2=q+1;
	end2=r;
	k=0;
	while(begin1<=end1 && begin2<=end2)
	{
		if (pData[begin1]<pData[begin2])
		{
			temp[k++]=pData[begin1++];
		}
		else
		{
			temp[k++]=pData[begin2++];
		}		
	}
	while(begin1<=end1)
	{
		temp[k++]=pData[begin1++];
	}
	while (begin2<=end2)
	{
		temp[k++]=pData[begin2++];
	}
	for (i=0;i<(r-p+1);i++)
	{
		pData[p+i]=temp[i];
	}
	delete []temp;
}

void merge_sort(int *pData,int first,int last)
{
	int mid=0;
	if (first<last)
	{
		mid=(first+last)/2;
		merge_sort(pData,first,mid);
		merge_sort(pData,mid+1,last);
		merge(pData,first,mid,last);
	}
}
void main()
{
	int i,array[] ={1,5,2,6,3,10,9,18};
	merge_sort(array,0,7);
	for (i=0;i<8;i++)
	{
		cout<<array[i]<<" ";
	}
}

int Partition(int *pData,int low,int high)//快速排序
{
	int i = low;
	int j = high + 1;
	int temp = pData[low];
	while(true){
		while(pData[++i]<temp&&i<high);
		while(pData[--j]>temp);//循环跳出后,下标为j的数组值一定小于等于temp
		if(i>=j)
			break;
		if(i<j){
			int temp = pData[i];
			pData[i] = pData[j];
			pData[j] = temp;
		}
	}
	pData[low] = pData[j];
	pData[j] = temp;
	return j;
}

void QuickSort(int *pData,int low,int high)
{
	if(low<high)
	{
		int tx = Partition(pData,low,high);
		QuickSort(pData,low,tx - 1);
		QuickSort(pData,tx+1,high);
	}
}

int main()
{
	int i,pData[17]={23,32,41,55,86,7,37,100,5,9,3,4,1,8,2,6,10}; 
	cout<<endl;
	QuickSort(pData,0,16);
	for(i = 0;i<17;++i)
		cout<<pData[i]<<' ';
	return 0;
}

6种排序算法的简洁实现:冒泡、选择、插入、归并、快速、堆

6种排序算法的简洁实现:冒泡、选择、插入、归并、快速、堆 注释写得已经非常详细了,有兴趣的可以瞧瞧。...

C语言之各种排序法及核心思想(冒泡、鸡尾酒、选择、插入、二分法、希尔、堆、归并、快速)

#include void swap(int num[],int a, int b) { int tmp; tmp = num[a]; num[a] = num[b]; num[b]...
  • ZH0314
  • ZH0314
  • 2017年08月03日 19:28
  • 268

冒泡、鸡尾酒、选择、插入、归并、快速排序的C++程序

#include using namespace std; void BubbleSort(int* pData,int Count)//冒泡排序 { int iTemp,i,j; for...

插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序

#include#includeusing namespace std;void print(int a[],int n);void InsertSort(int a[],int n){for(int...

js排序算法总结—冒泡,快速,选择,插入,希尔,归并

相信排序是任何一个程序猿都会用到的东西,今天简单总结记录下常见的排序算法。   一.冒泡排序      说起冒泡排序,可能每个人都不会陌生,实现思路相当简单明了,就是不停的对数组进行两两比较,将...

常见排序算法(冒泡、选择、插入、快速、归并C++实现)

常见排序算法(冒泡、选择、插入、快速、归并C++实现) #include using namespace std; // 冒泡排序 void bubbleSort (int data[], siz...

直接插入、冒泡、快速、简单选择、堆、归并排序算法

用Java语言实现了6种基本的排序算法:直接插入、冒泡、快速、简单选择、堆、归并。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:6种排序算法:冒泡、鸡尾酒、选择、插入、归并、快速
举报原因:
原因补充:

(最多只允许输入30个字)