交换排序的核心思想

1. 理解排序做的工作:

	排序的过程是一个逐步扩大记录的有序序列长度的过程,
	在排序的过程中可以将排序区分为两个区域:
		有序序列区 和 无需序列区

有序序列区: 已经排好序的序列
无序序列区: 尚未排好序的序列

我们所要做的工作就是: 把有序序列区一点一点增大直到长度变为最大为止,无需序列区一点点减少直到减为0位置

2.交换排序的本质是: 交换无序列区,产生一个有序的的数,有序列区长度加一,无序列区长度减一

3.冒泡排序

冒泡核心思想是: 相邻元素进行比较交换

4.直接上代码:

#include<stdio.h>
void swap(int *a,int *b){
	int temp=*a;
	*a=*b;
	*b=temp;
}
int main(int argc, char const *argv[])
{
	int a[]={2,1,3,5,4,7,9,8,6};
	
	for(int i=0;i<9-1;i++){//a[i]表示前一个元素(a[i]之前的元素是有序序列区,每一趟交换后,有序区长度即i加1)
		for(int j=i+1;j<9;j++){//a[j]表示后一个元素(i每次都向前移动一个)
			if(a[j]<a[i]){//让后一个元素和前一个元素相比较,如果比它小就交换
				swap(&a[i],&a[j]);
			}
		}
	}

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

5.运行效果:

在这里插入图片描述

6.封装

#include<stdio.h>
void swap(int *a,int *b){
	int temp=*a;
	*a=*b;
	*b=temp;
}
void  buttSort(int *a,int length){
	for(int i=0;i<length-1;i++){//a[i]表示前一个元素(a[i]之前的元素是有序序列区,每一趟交换后,有序区长度即i加1)
		for(int j=i+1;j<length;j++){//a[j]表示后一个元素(i每次都向前移动一个)
			if(a[j]<a[i]){//让后一个元素和前一个元素相比较,如果比它小就交换
				swap(&a[i],&a[j]);
			}
		}
	}

}
int main(int argc, char const *argv[])
{
	int a[]={2,1,3,5,4,7,9,8,6};
		buttSort(a,sizeof(a)/sizeof(a[0]));	
	//遍历
	for(int i=0;i<sizeof(a)/sizeof(a[0]);i++){
		printf("%d,",a[i]);
	}
//	printf("hellowrold");
	getchar();
}

7.封装后运行的代码

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值