冒泡排序+选择排序+快速排序

一. 冒泡排序

冒泡思想比较简单,直接上代码

void BubbleSort(int num[], int n){
	int i,j;
	for(i=0;i<n;i++){
		for(j=i;j<n;j++){
			if(num[i]>num[j]){
				swap(&num[i], &num[j]);
			}
		}
	}

}


二. 选择排序

选择排序和冒泡写起来比较像,不过冒泡是碰到更小的就交换,而选择是先找到最小的,然后交换,一次循环只交换一次,废话不多说,上代码

void SelectionSort(int num[], int n){
	int i,j,min;
	for(i=0;i<n;i++){
		min = i;
		//找出最小值
		for(j=i+1;j<n;j++){
			if(num[min] > num[j])
				min = j;
		}
		//交换
		if(min != i){
			swap(&num[i], &num[min]);
		}
	}
}


三. 快速排序

快速排序稍微复杂点,不过理解起来也不难,就是先通过查找交换,找到一个num[i]使num[i]前面的数都小于num[i],后面的都大于num[i],然后对num[0]...num[i-1]和num[i+1]...num[n-1]这两个子数组进行同样的操作,直到子数组只剩1个元素停止。上代码

void QuickSort(int num[], int p_low, int p_high){
	int low = p_low, high = p_high;
	if(low >= high)
		return;
	//直到low和high都到中间
	while(low < high){
		//low向中间移动
		while(num[low] <= num[high]){
			if(low>=high)
				break;
			low++;
		}
		swap(&num[low], &num[high]);
		//high向中间移动
		while(num[low] <= num[high]){
			if(low>=high)
				break;
			high--;
		}
		swap(&num[low], &num[high]);
	}
	//处理两边
	QuickSort(num, p_low, low-1);
	QuickSort(num, low+1, p_high);
}


另外贴出swap代码

void swap(int *a, int *b){
	int temp;
	temp = *a;
	*a	 = *b;
	*b	 = temp;
}


注:以上代码在VC6.0完美编译运行



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值