栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2021-10-10几种排序算法的实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-10几种排序算法的实现

以前写过的几种排序算法代码,贴上。

#include
#include

using namespace std;

//namespace Sort{

//选择排序[0,n)
void SelectSort(int n,int a[])
{
	for(int i=0;ia[j])
			{
				minIndex=j;
			}
		}

		if(minIndex!=i)
		{
			int t=a[minIndex];
			a[minIndex]=a[i];
			a[i]=t;
		}
	}
}

//冒泡排序[0,n)
void BubuleSort(int n,int a[])
{
	for(int i=0;ia[j+1])
			{
				int t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;
			}
		}
	}
}

//合并排序[left,right)
void MergeSort(int *left,int *right){
	int size=right-left;
	if(size<=1){
		return;
	}
	int *mid=left+size/2;
	MergeSort(left,mid);
	MergeSort(mid,right);
	//开辟存储
	int *p=(int *)malloc(size*sizeof(int));
	int *p1=left;
	int *p2=mid;
	//合并
	while(p1!=mid||p2!=right){
		*p++=(p2==right||(p1!=mid&&(*p1)<(*p2)))?(*p1++):(*p2++);
	}
	p=p-size;//回到起点
	p1=left;
	
	//复制结果回来
	while(p1!=right){
		*p1++=*p++;
	}
	
	//释放存储
	free(p-size);
}

//快速排序 [left,right](这里包括了right)
void quickSort2(int a[],int left,int right){
	int i=left;
	int j=right;
	int p=(left+right)/2;
	int t;
	while(i=p&&a[j]>=a[p]){
			j--;
		}
		if(j>p){
			t=a[j];
			a[j]=a[p];
			a[p]=t;
			p=j;
		}
	}
	if(leftp+1){
		quickSort2(a,p+1,right);
	}
}

	
		
	


//快速排序
//以a[l]为中心元素,把a[l~r)的元素分开,返回中心元素位置
int part(int a[],int l,int r)
{
	int i=l+1;
	int j=r-1;
	while(1)
	{
		
		while(a[j]>a[l])
		{
			j--;
		}
		while(a[i]=r)
			{
				break;
			}
		}
		if(i>n;
	for(int i=0;i>a[i];
	}

	//选择排序
	//cout<<"SelectSort"<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312129.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号