c++中的三种排序,比较基础,因为作为一个编程员总要会几种排序方法

我可能自己写的不是很清楚,如果写的不是很好或者不对的方面可以指出,毕竟自己也是个初学者,批评也是一个学习过程嘛 
//最简单的排序法
#include"stdafx.h"
#include<iostream>
using namespace std;
void sort(int [],int);
void sort(int p[],int n)
{
	int temp;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n-1-i;j++)
		{
			if(p[j]>p[j+1])
			{
				temp=p[j];
				p[j]=p[j+1];
				p[j+1]=temp;
			}
		}
	}
}

int main()
{
	int a[]={5,3,1,4,2};
	sort(a,5);
	for(int i=0;i<5;i++)
	{
		cout<<a[i]<<"\t";
	}
	system("pause");
	return 0;
}


//冒泡法
#include"stdafx.h"
#include<iostream>
using namespace std;
void bubblingsort(int [],int);
void bubblingsort(int a[],int n)
{
	int temp;
	for(int i=0;i<n;i++)
	{
		for(int j=n-1;j>i;j--)
		{
			if(a[j]<a[j-1])
			{
				temp=a[j-1];
				a[j-1]=a[j];
				a[j]=temp;
			}
		}
	}
}

int main()
{
	int a[]={7,2,3,4,1,5,6};
	bubblingsort(a,7);
	for(int i=0;i<7;i++)
	{
		cout<<a[i]<<" ";
	}
	system("pause");
	return 0;
}*/


//快速排序法(二分发排序)
#include"stdafx.h"
#include<iostream>
using namespace std;
void quicksort(int [],int);
void run(int [],int,int);

void quicksort(int a[],int n)
{
	run(a,0,n-1);
}
void run(int a[],int left,int right)
{
	int i,j,middle,temp;
	i=left;
	j=right;
	middle=a[(i+j)/2];
		do
		{
		while((a[i]<middle)&&i<right)
			i++;
		while((a[j]>middle)&&(j>left))
			j--;
			if(i<=j)
			{
				temp=a[i];
				a[i]=a[j];
				a[j]=temp;
				i++;
				j--;
			}
		}while(i<=j);
				if(left<j)
					run(a,left,j);
				if(right>i)
					run(a,i,right);
		
}

int main()
{
	int a[]={3,1,4,2,7,6,5};
	quicksort(a,7);
	for(int i=0;i<7;i++)
	{
		cout<<a[i]<<" ";
	}
	system("pause");
	return 0;
}
这次就放上最后一种方法的排序结果,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值