C语言程序设计整理(5)选择排序、冒泡排序与插入排序

(一)问题描述:

请分别使用选择排序,冒泡排序,插入排序对一个整数数组进行排序

三种排序方式伪代码定义如下:

(二)程序源码:
1)选择排序:
/*本函数以1000长度的数组为例,将其从小到大排序*/
void selection_sort(int num[1000])
{
    int i, j, k; //建立三个变量使用
    for(i = 0; i < 998; i++){ //i 从第一个开始遍历数直到倒数第二个
        k = i; //k 是用来记录在 i 之后最小的一个数
        for(j = 1; j < 999; j++){
            if(num[j] < num[k]){ //如果num[j]的值小于现在记录的最小值
                k = j; //就将 j 赋给 k
            }
        }
        if(k != i){ //若是后面有更小的数,就将其赋给num[i]
            num[i] = num[k];
        }
    }
}
2)冒泡排序:
/*本函数以1000长度的数组为例,将其从小到大排序*/
void Bubble_sort(int num[1000])
{
    int i, j, temp, judge; //建立需要使用的变量
    for(i = 0; i < 998; i++){ //i 从第一个开始遍历数直到倒数第二个
        judge = 1; //judge等于1表示真,0表示假
        for(j = 1; j < 999; j++){ 
            if(num[j] > num[j + 1]){ //如果发现由相邻两个数前面一个大于后面一个就将两者互换
                temp = num[j];
                num[j] = num[j + 1];
                num[j + 1] = temp;
                judge = 0; //假如互换过,judge就变为0
            }
        }
        if(judge) break; //假如judge没有变为0,则说明不再需要调整了
    }
}
3)插入排序:
/*本函数以1000长度的数组为例,将其从小到大排序*/
void Insert_sort(int num[1000])
{
    int i, j, key; //建立需要使用的变量
    for(i = 1; i < 999; i++){ //i 从第一个开始遍历数直到最后一个
        key = num[i]; //将num[i]保存在key中
        j = i - 1; //j 从 i 的前一个开始遍历
        while(j >= 0 && num[j] > key){ //如果num[j]大于key,则为了将key插入到合适的位置,
            num[j + 1] = num[j];       //需要将num[j]向后挪一位
            j -= 1;
        }
        num[j + 1] = key; //最后在停止的位置插入key
    }
}
(三)总结

       这三种排序算法是C语言中比较常见的三种排法,我们一定要牢记甚至熟背,做到不在这上面浪费时间。但排序的算法还有很多很多种,可以慢慢探索。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值