冒泡排序、插入排序、选择排序--C语言实现

本文介绍了三种常见的排序算法:冒泡排序、插入排序和选择排序,并提供了C语言实现代码。通过对比这三种算法的工作原理,帮助读者更好地理解这些基础排序算法的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

            最近打算抽时间复习数据结构,怎奈琐事繁杂,难以抽出时间,但又定下每天计划,故,第一天就写个最简单的几种排序算法的C语言实现吧。


            记得当时,最初接触排序,学会的第一个方法就是冒泡排序,这个也是我觉得最简单的排序方法。

            简单描述就是,先比较k1和k2,然后比较k2和k3,...,kn-1和kn。

           一遍比较下来,就确定了  n - i - 1个元素中最大的元素。

           在执行n-1次即可。

           

//冒泡排序
void popSort(int * a)
{
    for(int i = 0;i < LEN;i++)
	{
        for(int j = 0;j < LEN - i - 1;j++)
		{
             if(a[j] > a[j+1])
			 {
                  int tmp = a[j+1];
				  a[j+1] = a[j];
				  a[j] = tmp;
			 }
		}
	}

	//打印结果
	myprint(a);
}

       

              第二个是插入排序,插入排序是模拟我们打扑克调牌的过程,假设左手拿牌,右手摸牌。右手摸了第一张牌之后,左手拿着。摸了第二张牌后,再插入左手的牌中之前,需要和左手中的牌比较,选择查到后面还是前面。后面再摸牌就一样了。

             

//插入排序
void insertSort(int * a)
{
   for(int i = 1;i < LEN;i++)
   {
       int flag = a[i];  
	   int j = i-1;
	   while(j >= 0 && a[j] > flag)
	   {
		   a[j+1] = a[j];
		   a[j] = flag;
		   j--;
	   }
   }

   //打印结果
	myprint(a);
}

             第三个是选择排序,选择排序也是比较好理解的排序方法,它就是选择给定范围内的所有中的最小(最大)的一个放在最小(最大)的应该放的位置。

         

//选择排序
void selectSort(int * a)
{
   for(int i = 0;i < LEN;i++)
   {
        int min = i;
		//在i到LEN-1之间选择最小的和i的互换位置
		for(int j = i;j < LEN;j++)
		{
              if(a[j] < a[min])
				  min = j;
		}
		int tmp = a[i];
		a[i] = a[min];
		a[min] = tmp;
   }
  
   //打印结果
   myprint(a);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值