c++的算法之选择排序,冒泡排序

1.选择排序


​      选择排序每次循环比较,遍历出所有的数,找出最值,然后和此时数组的第一个元素交换,只交换这一次,最终完成所有的数的排列



#include<stdio.h>
#include<Windows.h>

int main(void) {

	int a[] = { 123,234,213,112,456,342,222,111 };//定义一个数组
	int len = sizeof(a) / sizeof(a[0]); //数组长度

	
    /*
        每次找到一个最值放到数组最前方,例如第一次循环放到a[0];第二次循环放到a[1];
    所以一共需要len-1次,就把所有的书排列完毕
    */
	for (int i = 0; i < len - 1; i++) {
		for (int j = i + 1; j < len; j++) {
			if (a[i] > a[j]) {     //i是每次循环的第一个元素,j是下一个元素
				int tmp = a[j];
				a[j] = a[i];
				a[i] = tmp;
			}
		}
	}

	for (int i = 0; i < len; i++) {//遍历数组每一个数
		printf(" %d ", a[i]);
	}

	system("pause");//暂停
	return 0;

}

2.冒泡排序



     从数组第一个数开始每两个数进行比较,若第一个数比第二个数大交换位置,在和下一个数比较,直到比较完最后一个,第一次循环结束,以此类推

 


#include<stdio.h>
#include<Windows.h>

int main(void) {

	int a[] = { 123,234,213,112,456,342,222,111 };
	int len = sizeof(a) / sizeof(a[0]);

	//冒泡排序
	for (int i = 0; i < len - 1; i++) {
    /*
       每次循环完,最大值排到最后,数组总数减一.比如i=0,j=0时,排序完成后,最大值a[7]=456,最大值
    a[7]固定不再参与比较,此时数组最大值为:a[len-i-1]即a[6];以此循环直至所有数排列完毕
    */
		for (int j = 0; j < len - 1 - i;j++) {
			if (a[j] > a[j + 1]) {
				int tmp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = tmp;
			}
		}
	}

	for (int i = 0; i < len; i++) {
		printf(" %d ", a[i]);
	}

	system("pause");
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值