基础数据结构——排序算法

一些基础的排序算法实现

//排序算法
#include
using namespace std;
	int a[100];
	int b[100]; 
	int n;
	
//打印函数  显示每次排序后的结果
void display(int a[],int n){
	for(int i=1;i<=n;i++)
		cout<>1;
			if(a[mid]>a[0]) high=mid-1;
			else
				low=mid+1;
		}
		for(j=i-1;j>=high+1;--j){
			a[j+1]=a[j]; 
		}
		a[high+1]=a[0];
	}
} 

//希尔排序
void SheelSort(int a[],int n){
	int dk,i,j;
	for(dk=n/2;dk>=1;dk=dk/2)
		for(i=dk+1;i<=n;++i)
			if(a[i]0&&a[0]i;j--)
			if(a[j-1]>a[j]){
				swap(a[j-1],a[j]);
				flag=true;
			}
			display(a,n);
			if(flag==false)
		return ;	
	}
	
} 


//冒泡排序 没有优化
void BubbleSort2(int a[],int n){
	for(int i=1;i<=n-1;i++)
		for(int j=i+1;j<=n;j++){
			if(a[j]=high) return ;
	int i=low-1,j=high+1,x=a[(low+high)>>1];
	while(ix);
		do i++;while(a[i]a[i]) break;
		else
			a[k]=a[i],k=i;
	}
	a[k]=a[0];
}
void BuildMaxheap(int a[],int n){
	for(int i=n/2;i>=1;i--)
		HeadAdjust(a,i,n);
} 
//堆排序
void HeapSort(int a[],int n){
	BuildMaxheap(a,n);
	for(int i=n;i>1;i--)
	{
	
		swap(a[i],a[1]);
		HeadAdjust(a,1,i-1);
	}
}


//归并排序
void MergeSort(int a[],int l,int r){
	if(l>=r) return ;
	int mid=(l+r)>>1;
	MergeSort(a,l,mid);
	MergeSort(a,mid+1,r);
	int k=0,i=l,j=mid+1;
	while(i<=mid&&j<=r){
		if(a[i]<=a[j])
			b[k++]=a[i++];
		else
			b[k++]=a[j++];
	}
	while(i<=mid) b[k++]=a[i++];
	while(j<=r)   b[k++]=a[j++];
	for(int i=l,j=0;i<=r;i++,j++)  a[i]=b[j];
}


int main(){

	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	
	//InsertSort(a,n);
	//InsertSort2(a,n); 
	//SheelSort(a,n);
	//BubbleSort(a,n);
	//quickSort(a,n,1,n);
   	//SelectSort(a,n);
   	//HeapSort(a,n);
   	
   	MergeSort(a,1,n);
	for(int i=1;i<=n;i++)
		cout<

你可能感兴趣的:(基础数据结构,算法,数据结构,排序算法,快速排序)