常见的排序问题(一)

本文介绍了C语言中两种经典的排序算法——选择排序和冒泡排序。选择排序的基本思想是在每一轮中找到剩余元素中的最小值并与其交换,总比较次数为n(n-1)/2。冒泡排序则通过相邻元素的比较和交换,直至没有反序的记录,其平均时间复杂度同样为O(n^2)。文章还提到了冒泡排序的改进方法,通过添加标志位可以在数据已有序时提前结束排序,提高效率。
摘要由CSDN通过智能技术生成

  排序是编程中非常重要的一个需求与功能,经常需要用到排序,在现实中又有太多排序的例子,像电话簿联系人,很多体育比赛,包括各种选举都是通过排序来决定名次与结果的。所以排序问题也是c语言中的一个非常经典的问题,接下来,我将用这篇和下一篇博客来分析一下用c语言实现的排序的几种方法以及它们的特点及各自的改进。(接下来都是以从小到大排序为例介绍一下这几种排序方法),通常情况下用数组来处理排序问题。

  先说一下非常经典的一种方法,选择排序法吧,选择排序是c语言中常用的一种排序算法,它的基本思想是,:每步从待排序的记录中选出剩下的元素中最小的元素,把其与当前还没有完成排序的数列中的第一个数进行交换,这样每在第i轮排序完成后,就可以保证前i个元素是这一组元素中的最小的i个数,且从小到大排列。它的代码如下。

#include <stdio.h>
void selectsort(int a[],unsigned int n)
{
  int i=0,j=0,temp=0,min=0;// 接下来嵌套的for循环将完成选择排序的主要工作
  for (i=0;i<n;i++)
   {min

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值