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

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

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

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

希尔排序法:

/*
 * @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);
}

相关文章
|
6天前
|
C语言
【C语言】拿捏冒泡排序(图解)
【C语言】拿捏冒泡排序(图解)
|
6天前
|
Java C语言
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
31 0
|
1天前
|
存储 C语言
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)(下)
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)
8 1
|
1天前
|
存储 C语言
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)(上)
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)
10 0
|
6天前
|
C语言
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
11 0
|
6天前
|
C语言
【C语言/数据结构】排序(选择排序,推排序,冒泡排序)
【C语言/数据结构】排序(选择排序,推排序,冒泡排序)
14 0
|
6天前
|
C语言
【C语言/数据结构】排序(直接插入排序|希尔排序)
【C语言/数据结构】排序(直接插入排序|希尔排序)
16 4
|
6天前
|
C语言
C语言的冒泡排序
C语言的冒泡排序
18 0
|
6天前
|
搜索推荐 算法 C语言
【排序算法】C语言实现选择排序与冒泡排序
【排序算法】C语言实现选择排序与冒泡排序
|
5天前
|
C语言
C语言—内存函数的实现和模拟实现(内存函数的丝绸之路)
C语言—内存函数的实现和模拟实现(内存函数的丝绸之路)
18 0