C语言冒泡排序&选择排序

目录

冒泡排序

选择排序


冒泡排序

int a[5]={5,4,3,2,1};

5个数:比较4轮

第一轮:

45321        43521        43251        43215

第二轮:

34215        32415        32145

第三轮:

23145        21345

第四轮:

12345

int a[5]={5,4,3,2,1},t;

for(int i=0;i<4;i++)

{

for(int j=0;j<4-i;j++)

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

for(int k=0;k<5;k++)

printf("%d\n",a[k]);

return 0;

 宏定义版:

#define N 5
int main(int argc, char const *argv[])
{
int a[N]={},t;
for(int i=0;i<N;i++)
scanf("%d",&a[i]);
for(int i=0;i<N-1;i++)
{
for(int j=0;j<N-1-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(int k=0;k<N;k++)
printf("%d\n",a[k]);
return 0;

选择排序

 

首先从原始数组中选择最小的1个数据,将其和位于第1个位置的数据交换。

接着从剩下的n-1个数据中选择次小的1个元素,将其和第2个位置的数据交换

然后,这样不断重复,直到最后两个数据完成交换。最后,便完成了对原始数组的从小到大的排序。

#include<stdio.h>
int main(int argc, char const *argv[])
{
int a[5]={1,4,3,2,5};
int min=0;		//暂存最小元素下标
int t;
for(int i=0;i<5-1;i++)	//轮数
{
min=i;
for(int j=i+1;j<5;j++)  //次数
{
if(a[min]>a[j])
{
min=j;
}
}
if(i!=min)
{
t=a[i];
a[i]=a[min];
a[min]=t;
} 
}
for(int k=0;k<5;k++)
printf("%d ",a[k]);
return 0;
}

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
冒泡排序选择排序都是常见的排序算法,下面我会分别介绍一下它们的原理和实现。 冒泡排序是通过相邻元素的比较和交换来实现排序的。它的基本思想是从待排序的序列中依次比较相邻的两个元素,如果顺序不正确则进行交换,直到整个序列都有序。具体的实现步骤如下: 1. 从序列的第一个元素开始,依次比较相邻的两个元素。 2. 如果前一个元素大于后一个元素,则交换它们的位置。 3. 继续向后比较,直到最后一个元素。 4. 重复上述步骤,每次比较范围缩小一个元素,直到整个序列有序。 选择排序是通过不断地选择最小(或最大)的元素,并将其放到已排序序列的末尾来实现排序的。它的基本思想是从待排序的序列中选择一个最小(或最大)的元素,将其放到已排序序列的末尾,然后再从剩余未排序的序列中选择最小(或最大)的元素,重复这个过程,直到整个序列有序。具体的实现步骤如下: 1. 遍历整个序列,找到最小(或最大)的元素。 2. 将最小(或最大)的元素与当前遍历位置的元素交换位置。 3. 继续向后遍历,重复上述步骤,每次遍历范围缩小一个元素,直到整个序列有序。 冒泡排序选择排序都是比较简单直观的排序算法,但是它们的效率相对较低,当待排序序列较大时,它们的性能会下降。在实际应用中,可以考虑使用更高效的排序算法,如快速排序、归并排序等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值