栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

常用排序算法(C语言)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

常用排序算法(C语言)

1.冒泡排序
void BubbleSort(int a[],int len)
{int tmp;
    for (int i=0; i
        int flag = FALSE;
        for(int j=n-1;j>i;j--)
            if(a[j-1]>a[j])
            {
                tmp = a[j-1];
                a[j-1] = a[j];
                a[j] = tmp;
                flag = TRUE;
            }
        if(flag == FALSE)
            return;
    }
}
2.简单选择排序
void SelectSort(int a[],int len)
{int tmp;
    for(int i=0; i
        int min = i;
        for(j=i+1; j
            tmp = a[min];
            a[min] = a[i];
            a[i]=tmp;
        }
    }
}
3.快速排序
void QuickSort(int a[],int low,int high)
{
    if(low
        int pivotpos = Partition(a,low,high);//枢轴
        QuickSort(a,low,pivotpos-1);
        QuickSort(a,pivotpos+1,high);
    }
}
int Partition(int a[],int low,int high)
{   //一趟划分操作
    int pivot = a[low];
    while(low
        while(low=pivot) --high;
        a[low]=a[high];
        while(low 
4.堆排序 
void HeadAdjust(int a[],int k,int len)
{   //将元素k为根的子树进行调整
    a[0]=a[k];
    for(int i=2*k; i<=len; i*=2)
    {
        if(i=a[i])
            break;
        else
        {
            a[k]=a[i];
            k=i;
        }
    }
    a[k]=a[0];
}

void BuildMaxHeap(int a[],int len)
{
    for(int i=len/2; i>0; i--)//i从[n/2]到1,反复调整堆
        HeadAdjust(a,i,len);
}

void HeapSort(int a[],int len)
{
    int tmp;
    BuildMaxHeap(a,len);
    for (int i=len; i>1; i--)
    {
        tmp = a[i];
        a[i] = a[1];
        a[1]=tmp;
        HeadAdjust(a,1,i-1);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/864444.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号