小白写排序

再白的小白也要会的:
C++
小小白还不会更多的数据结构,就简单地用数组写了,也查过前辈的代码,不过建议先看大佬的讲解,然后先自己写一写,再看代码。

#define Swap(a,b){int t=a;a=b;b=t;}//搞一个交换函数
//冒泡排序
void bubble_sort(int *p,int n){
	for(int i=0;i<n-1;i++){
		for(int j=i;j<n-i-1;j++){
			if(p[j]>p[j+1])Swap(p[j],p[j+1]);//由小到大
		}
	}
}
//插入排序
void insert_sort(int *p,int n){
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			for(int k=j;k<n-1;k++){
				if(p[k]>p[k+1])Swap(p[k],p[k+1]);//由小到大
			}
		}
	}
}
//选择排序
void elect_sort(int left,int right,int *p){
	int max=p[1],min=p[0];
	for(int j=left,k=right;j<=k;j++,k--){
		for(int i=left;i<=right;i++){
			if(p[i]>=max)max=p[i];
			if(p[i]<=min)min=p[i];
		}
		Swap(p[left],min);	//小的往前
		Swap(p[right],max);	//大的往后
	}
}
//快速排序(错误已经更正)
void quick_sort(int left,int right,int *p){
	if(left>=right)return;
 	int i=left,j=right,mid;
 	mid=p[(i+j)/2];
 	for(i,j;i<=j;i++,j--){
 		while(p[j]>mid){j--;}
		while(p[i]<mid){i++;}
 		if(p[i]>p[j])Swap(p[i],p[j]);
	}
	//quick_sort(left,mid,p);
	//quick_sort(mid+1,right,p);
	if(left<j)quick_sort(left,j,p);
    if(i<right)quick_sort(i,right,p);
}

再附一张插入排序的图示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值