数据结构__排序

本文深入讲解了四种经典的排序算法:插入排序、希尔排序、归并排序及快速排序。提供了详细的算法实现代码,包括递归与迭代方法,并附有相关链接进行更深入的学习。

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

1.插入排序

void insert_sort(int a[], int n)
{
    for (int i = 1; i < n; i++) {
        int temp = a[i], j = i-1;
        for (int j = i - 1; a[j]>temp&&j>=0; j--)
            a[j+1] =  a[j];
        a[j+1] = temp;
    }
}

 也可以用监视哨

2.希尔排序

void ShellSort(int r[], int n)
{
    int d, i, j;
    for (d = n/2; d >= 1; d = d/2) {
        for (i = d+1; i <= n; i++) {
            r[0] = r[i], j = i-d;
            while (j>0&&r[0]<r[j]) {
                r[j+d] = r[j];
                j = j-d;
            }
            r[j+d] = r[0];
        }
    }
}

 3.归并排序

void Merge(int r[], int s, int m, int t)
{
    int i = s, j = m+1, k = s;
    while (i<=m&&j<=t) r1[k++] = r[i]<=r[j] ? r[i++] : r[j++];
    while (i<=m) r1[k++] = r[i++];
    while (j<=t) r1[k++] = r[j++];
    for (i = s; i <= t; i++) r[i] = r[i]; 
} 

>递归法

void Mergesort1(int r[], int s, int t)
{
    if(s==t) return;
    int m = (s+t)/2;
    Mergesort(r, s, m);
    Mergesort(r, m+1, t);
    Merge(r, s, m, t);
}

>迭代法

void MergeSort2(int r[], int n, int h)
{
    for (int h = 1; h < n; h*=2) {
        for (int i = 1; i+2h-1 <= n; i += 2h)
            Merge(r, i, i+h-1, i+2*h-1);
        if (i+h-1<n) Merge(r, i, i+h-1, n);
    }    
}

 4.快速排序

https://blog.youkuaiyun.com/zpznba/article/details/83745205

 

https://blog.youkuaiyun.com/wangchao701123/article/details/81276913

之后再做分析吧,先把数据结构过了

转载于:https://www.cnblogs.com/wizarderror/p/11085177.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值