冒泡法与选择法!

数组排序的两种常见方法:
1.冒泡法 2.选择法
冒泡法:相邻两数比较交换,小升大沉,比较n-1次(最后那个数的位置自动确定),每次比较中进行n-j次两两比较,每次比完最大的数到最后面。
代码如下:
void BubbleSort(int *arr,int len)
{
int tmp;
for(int i=0;i<len-1;i++) //n个数 一共比较n-1次
{
for(int j=0;j<len-1-i;j++) //j只用比len-1-i,i是表示后面的以确定的最大数的个数
{
if(arr[j] > arr[j+1]) //把每一轮中最大的数 沉到最后面
{
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}

int main()
{
int arr[]={5,6,4,2,3,89,1,6};
BubbleSort(arr,sizeof(arr)/sizeof(arr[0]));
for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
{
printf("% d",arr[i]);
}
return 0;
}
在这里插入图片描述
选择法:每次将第一个最为最小值,再与后面的数进行比较,将真正的最小值找到放到第一个位置
代码如下:
void show(int *arr,int len)
{
int min;
int tmp;
for(int i=0;i<len;i++)
{
min=i;
for(int j=i+1;j<len;j++) //前i个数是已经排列好了的
{
if(arr[j]<arr[min])
min=j;
}
if(min!=i) //交换j和i的位置
{
tmp=arr[i]; //这里一定不能是arr[i]和arr[j]进行交换,因为j会一直往后走,而 min一定是那个最小的j
arr[i]=arr[min];
arr[min]=tmp;
}
}
}

int main()
{
int arr[]={1,6,4,5,9,2};
show(arr,sizeof(arr)/sizeof(arr[0]));
for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
{
printf("% d",arr[i]);
}
return 0;
}
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值