C语言之冒泡排序、快速排序法、希尔排序法

2023-11-11

众所周知编程排序方法众多而且程序的好坏就取决于算法的使用

下面是博主现在会的几种排序方法希望对大家有所帮助。

希尔排序法:

/*
 * @Author: Stylle
 * @Date: 2020-11-14 15:52:03
 * @LastEditors: Stylle
 * @LastEditTime: 2020-11-14 15:52:16
 * @FilePath: \undefinedc:\Users\23999\Desktop\text.c
 */
#include <stdio.h>

void out(int s[]) //数组输出
{
    int y;
    for (y = 0; y < 10; y++)
    {
        printf(% d”, s[y]);
    }
}
void main()
{
    int s[10] = {10, 9, 8, 6, 7, 5, 4, 3, 2, 1};
    int end = 9, start = 0;          //开始的下标和结束的下标
    int increment = end - start + 1; //长度
    int i = 0, temp = 0;
    do //进行判断长度是否大于1
    {
        increment = increment / 3;                 //
        for (i = start + increment; i <= end; i++) //参考插入法可理解
        {
            if (s[i - increment] > s[i])
            {
                temp = s[i];
                int j = i - increment;
                do
                {
                    s[j + increment] = s[j];
                    j -= increment;
                } while (j >= start && s[j] > temp);
                s[j + increment] = temp;
            }
        }
    } while (increment > 1);
    out(s);
}

冒泡排序:

#include <stdio.h>

int main()
{
    int a[10];
    int i, n, c;
    printf(“请输入十个数:\n”);
    //循环输入模块
    for (i = 0; i < 10; i++)
        scanf(% d”, &a[i]);
    //循环判断
    for (i = 0; i < 10; i++)
    {
        for (n = 0; n < 10; n++)
        {
            if (a[i] < a[n])
            {
                c = a[n];
                a[n] = a[i];
                a[i] = c;
            }
        }
    }
    //循环输出模块
    for (i = 0; i < 10; i++)
    {
        printf(% d “, a[i]);
    }
    return 0;
}

快速排序法:

#include <stdio.h>

void sort(int s[], int left, int right) //进行排序
{
    if (left < right) //判断取的key两边的数组下标是否符合排序规则
    {
        int i = left, j = right;
        int key = s[left];
        while (i < j)
        {
            while (i < j && key <= s[j]) //寻找数组小于key的下标(从右到左)
                j–;
            s[i] = s[j];
            while (i < j && key >= s[i]) //寻找数组大于key的下标(从左到右)
                i++;
            s[j] = s[i];
        }
        s[i] = key;
        sort(s, left, i - 1);  //递归子表1,在key的左边的下标
        sort(s, i + 1, right); //递归子表2,在key的右边的下标
    }
}
void out(int s[]) //输出数组
{
    int i;
    for (i = 0; i < 10; i++)
    {
        printf(% d”, s[i]);
    }
}
void main()
{
    int s[10] = {1, 9, 8, 7, 6, 5, 4, 3, 2, 1};
    out(s);
    printf(“\n”);
    sort(s, 0, 9);
    out(s);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言之冒泡排序、快速排序法、希尔排序法 的相关文章

随机推荐

  • JavaWeb.购物车项目

    前言 本章纯代码 后期会修改 一 数据库代码 用户表 create table shop user id number primary key account varchar2 30 not null password varchar2 3
  • leetcode刷题:数组的最大子序和

    题目 动态规划 分析 上面的图是老的数组 下面的是新的数组 通过老数组的当前值加上前一个值对应位置的新数组的值 就是新数组对应位置的新值 最后找到新的队列元素中的最大值即可 代码如下 include
  • MyBatis实现多表查询

    前言 以下学习内容所需数据表 一 关联查询 一 手动处理映射关系 在数据查询后映射到实体类中时 如果映射的属性名和数据表的字段名不一致时 就会返回null 解决办法是使用resultMap进行配置 手动处理数据库查询字段和封装实体类属性之间
  • 详解数据库的自然连接

    首先来看自然连接的定义 自然连接 是一种特殊的等值连接 它要求两个关系进行比较的分量必须是相同的属性组 并且在结果集中将重复属性列去掉 一个简单的例子 将下列关系R和S进行自然连接 R A B C a b c b a d c d e d f
  • patroni+etcd+antdb高可用

    patroni etcd antdb高可用架构图 Patroni组件功能 自动创建并管理主备流复制集群 并且通过api接口往dcs Distributed Configuration Store 通常指etcd zookeeper cons
  • Android—WebView简单使用

    华清创客学院 2016 12 12 08 49 有时候我们可能会碰到一些比较特殊的需求 比如说要求在应用程序里展示一些网页 相信每个人都知道 加载和显示网页通常都是浏览器的任务 但是需求里又明确指出 不允许打开系统浏览器 而我们当然也不可能
  • 159.并发编程(三):线程池,JUC

    目录 一 线程池 1 线程池的作用 2 手写线程池 3 ThreadPoolExecutor 1 线程池状态
  • 常用测试用例

    为方便平时写测试用例 整理如下 功能 条件 测试步骤 测试数据 预期结果 备注 搜索或查询 单独遍历各查询条件 测试按各查询条件是否都能够查询出相应的值 查询出符合条件的记录 设置界面上所有查询条件进行查询 单击查询按钮后 测试执行查询操作
  • 软件测试入门基础

    软件工程的四条基本原则 采取适宜的开发模型 采用合适的设计方法 提供高质量的工程支持 重视开发过程的管理 什么是软件测试 软件测试就是在软件投入运行前 对软件需求分析 设计规格说明和编码实现的最终审查 为什么要进行软件测试 软件测试就是为了
  • 深圳地区高校福利来啦!7月5日华为云开发者沙龙门票限时免费领取!

    7月5日华为云开发者沙龙深圳站开启报名 华为云专家现场手把手教你如何快速实现AI应用开发并赠送价值298元CSDN会员卡 了解行业趋势进行技术储备 高校教师 学生免费参会 报名地址 https huiyi csdn net activity
  • 谷歌浏览器关闭安全模式, 访问 http网站

    设置 隐私设置和安全性 安全 选择 不保护
  • Redis 7 第三讲 数据类型 进阶篇

    位图 bitmap 1 理论 由0和1 状态表现的二进制位的bit 数组 说明 用String 类型作为底层数据结构实现的一种统计二值状态的数据类型 位图本质是数组 它是基于String 数据类型的按位操作 该数组由多个二进制位组成 每个二
  • 基于Mahout实现协同过滤推荐算法的电影推荐系统

    1 Mahout介绍 Apache Mahout 是 Apache Software Foundation ASF 旗下的一个开源项目 提供一些可扩展的机器学习领域经典算法的实现 旨在帮助开发人员更加方便快捷地创建智能应用程序 经典算法包括
  • 实践是检验程序员的唯一标准01:用户不想跟你说话并向你扔出一张图片 - 图片上传组件开发【思路篇】...

    温馨提示 这里除了一些幼稚的小组件啥也没有温馨提示 续 这是一个新的系列 写一些实际开发中遇到的一些常用的功能 想法笨拙 代码乱套 写在前面 图片上传 作为web端一个常用的功能 在不同的项目中有不同的需求 在这里实现一个比价基本的上传图片
  • 【python基于mysql数据库实现无页面学生信息管理系统】

    python基于mysql数据库实现无页面学生信息管理系统以及简单操作mysql 前言 一 分步讲解 0 创建两张数据表 1 大概思路 2 首先连接数据库 3 查看所有学生成绩信息 4 查看所有学生个人信息 5 查看指定学生成绩信息 6 添
  • ORM中对于外键关联的处理

    根据侧重点的不同可以分为两类 一是侧重子表 即CRUD操作主要是针对子表进行的 例如书中所举的例子album 是子表 artist是主表 class AlbumMapper 1 Mapper实现的对象初始化 public Album fin
  • EXTJS2.2组件Combobox下拉框获取数据

    1 获取数据 var dataPath 远程连接 var genderStore new Ext data JsonStore proxy new Ext data HttpProxy method POST url tHarvestTab
  • 前端随笔(五)————浅谈React工程化

    1 什么是React 用于构建用户界面的 JavaScript 库 React官方文档 严格意义上来说 React并非框架 而是一个JS库 常用库 react 库 react dom 库 React具有如下特点 声明式 组件化 跨平台开发
  • 华为鸿蒙到底是不是安卓系统套了个壳?

    余承东在2月份宣布 鸿蒙将于4月份全面上线 果然没有食言 华为鸿蒙2 0来了 首批升级机型名单包括 Mate X2 Mate40以及P40系列 需要注意的是这次上线的鸿蒙OS依旧只是开发者测试版 还不是正式版本 另外花粉们必须前往官网申请加
  • C语言之冒泡排序、快速排序法、希尔排序法

    众所周知编程排序方法众多而且程序的好坏就取决于算法的使用 下面是博主现在会的几种排序方法希望对大家有所帮助 希尔排序法 Author Stylle Date 2020 11 14 15 52 03 LastEditors Stylle La