再次探究数组的排序算法

本文回顾了选择排序和冒泡排序的基本思想及实现方式,并探讨了如何对二维数组进行排序的方法。

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

开始学习的时候就会排序算法了。但是过了一段时间就忘记了。这几天我我又哪里练习一下好像是忘记了一样,

今天在次写一下我的心得、个人理解,新手,可喷,你的改进便是我前进的动力。

排序: 选择排序算法的思路是,默认第一个数就是最大(最小)的,然后第二个for语句就是找打比这个数还要大(要小)最后交换他们他和我们默认之间
的值就好了。
/*选择排序, 升序的代码*/


for (i = 0 ; i < len-1; i++)
for ( j = i+1; j < len; j++)
{
 if(array [i] > array [j])
{
tem = array [i];
array [i] = array [j];
array [j] = tem;



}


冒泡排序算法思路是:
  这是第一个for 语句的功能。
假如有6个数,第1个和第2个比较。把最大的数存到第2数当中,然后和第3个数比较,把最大的数存到
第 3个数当中, 同理,只用比较到第5个就可以了。因为第5个和第6个比较以后不就不用比较第6个了。
这是第一个for 语句的功能。

  第二个for语句
就是比较了,其实我认为最重要的是弄清楚比较的次数,假如你都不知道比较的次数那么冒泡就基本就不能懂了。
还是以6个数为例,第一次就是把目的就是找到当中最大的数存到数组的最后面去,那就你自然就冒泡6-1次
当用第一个for 执行第二次的时候, 那就相当于我们把第二大的数只能存到数组的倒数第二项了。相当于只能
执行到 
if ()语句就不多说了。看到代码自然就明白了。
  依次类推,到循环结束


for ( i = 0; i < index -1; i++)
for ( j = 0; j < index - i -1; j++)  // 为什么要是加index -i -1 呢、
{
if (array [j] > array [j+1]
{
tem = array [j];
array [j] = array [j+1];
array [j+1] = tem;
}
}


假如要对二维数组进行排序的话可根据 数组在内存开辟的地址是连续的原理, 可以把他转化成一维数组的思想去解决:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值