插入,冒泡,选择,快速排序(c语言,排序)

news/2024/5/19 23:23:46 标签: 排序算法, 数据结构, 算法, 快速排序, c语言

源代码

/************************** 插入,冒泡,选择,快速 排序 ***********************************/
#include<stdio.h>
typedef struct abc
{
    int key;

}SeqList;
void insert_sort(SeqList r[],int n);//插入排序
void bubble_sort(SeqList r[],int n);//冒泡排序
void select_sort(SeqList r[],int n);//选择排序
void quick_sort(SeqList r[],int i,int j);//快速排序
int split(SeqList r[],int i,int j);
int main()
{
    int i,n;
    scanf("%d",&n);
    SeqList r[n+1];
    for(i=1;i<=n;i++)
        scanf("%d",&r[i].key);

    //insert_sort(r,n);//插入排序
    //bubble_sort(r,n);//冒泡排序
    //select_sort(r,n);//选择排序
    quick_sort(r,1,n);//快速排序


    printf("\n排序结果:");
    for(i=1;i<=n;i++)
        printf("%d ",r[i].key);

    return 0;
}
void quick_sort(SeqList r[],int i,int j)
{
    if(i<j)
    {
        int mid=split(r,i,j);
        quick_sort(r,i,mid-1);
        quick_sort(r,mid+1,j);
    }
}
int split(SeqList r[],int i,int j)
{
    r[0]=r[i];
    while(i<j)
    {
        while(i<j && r[j].key>=r[0].key)
            j--;
        if(i<j)
        {
            r[i]=r[j];
            i++;
        }
        while(i<j && r[i].key<=r[0].key)
            i++;
        if(i<j)
        {
            r[j]=r[i];
            j--;
        }
    }
    r[i]=r[0];
    return i;
}
void select_sort(SeqList r[],int n)//选择排序
{
    int i,j;
    for(i=1;i<n;i++)
    {
        int k=i;
        for(j=i+1;j<=n;j++)
        {
            if(r[j].key<r[k].key)
                k=j;
        }
        if(k!=i)
        {
            r[0]=r[i];
            r[i]=r[k];
            r[k]=r[0];
        }
    }
}
void bubble_sort(SeqList r[],int n)
{
    int i,j;
    for(i=1;i<n;i++)
    {
        int flag=0;
        for(j=1;j<=n-i;j++)
        {
            if(r[j].key>r[j+1].key)
            {
                r[0]=r[j];
                r[j]=r[j+1];
                r[j+1]=r[0];
                flag=1;
            }
        }
        if(flag==0)
            break;
    }
}
void insert_sort(SeqList r[],int n)
{
    int i,j;
    for(i=2;i<=n;i++)
    {
        if(r[i].key<r[i-1].key)
        {
            r[0]=r[i];
            j=i-1;
            while(r[j].key>r[0].key)
            {
                r[j+1]=r[j];
                j--;
            }
            r[j+1]=r[0];
        }
    }
}

输入数据说明:

初始化时,第一行输入为序列的个数n,第二行为n个无序数序列

测试数据1:

9
1 3 4 8 5 2 9 6 7


http://www.niftyadmin.cn/n/1786393.html

相关文章

python子线程共享主线程变量_Python 中多线程共享全局变量的问题

在之前&#xff0c;我们讲过了&#xff0c;Python 中多个线程之间是可以共享全局变量的数据的。但是&#xff0c;多线程共享全局变量是会出问题的。假设两个线程 t1 和 t2 都要对全局变量 g_num (默认是0)进行加1运算&#xff0c;t1 和 t2 都各对 g_num 加10次&#xff0c;g_nu…

图的邻接矩阵存储方式下的深度、广度优先遍历算法 (c语言,链队列,图的遍历,深度优先,广度优先)

源代码 /************************** 图的邻接矩阵与深度广度优先 ***********************************/ #include<stdio.h> #define Maxsize 100 typedef struct abc {int vertex[Maxsize];int edges[Maxsize][Maxsize];int v_num,e_num;}MGraph; MGraph *init_graph(…

在pcb放置坐标标注_pcb拼板的定义是什么

pcb拼板只是为了生产方便&#xff0c;对于制板厂来说&#xff0c;他的基材一般都比较大&#xff0c;一次做很多块板子&#xff0c;然后给一块一块的切下来&#xff0c;如果做拼板主要是在焊接生产时候用&#xff0c;想象一个指甲盖大的板子一个一个的在汽车那么大的SMT机子上焊…

华为手机root过程

第一步&#xff1a; 获取解锁码&#xff08;万能的T宝&#xff09; 第二步&#xff1a; 手机开机状态连接电脑&#xff0c;并开启手机usb调试&#xff0c;使用华为工具箱进行解锁。 进入这个界面后&#xff0c;使用音量键上下切换&#xff0c;电源键确定&#xff0c;选择ye…

python判断回文字符串_js 判断回文字符串

回文( Palindromes )&#xff0c;在中文文当中是指倒着念和顺着念都是相同的&#xff0c;前后对称&#xff0c;例如“上海自来水来自海上”&#xff1b;在英文文当中是指正着看和反着看都相同的单词&#xff0c;例如“madam”&#xff1b;而对于数字&#xff0c;又称之为回文数…

centos7安装chrome浏览器,yum安装,centos

新建一个yum依赖&#xff1a; vi /etc/yum.repos.d/google-chrome.repo写入下列内容&#xff1a; [google-chrome] namegoogle-chrome baseurlhttp://dl.google.com/linux/chrome/rpm/stable/$basearch enabled1 gpgcheck1 gpgkeyhttps://dl-ssl.google.com/linux/linux_sign…

string 中的offset_String 使用不当可能导致内存泄露

String是Java中一个比较基础的类&#xff0c;每一个开发人员都会经常接触到。而且&#xff0c;String也是面试中经常会考的知识点。String有很多方法&#xff0c;有些方法比较常用&#xff0c;有些方法不太常用。今天介绍一个String使用不当可能导致内存泄露的问题&#xff0c;…

selenium浏览器驱动安装,chromedriver,edge浏览器驱动安装

一、windows edge浏览器驱动安装 在管理员模式下运行cmd&#xff0c;执行命令 DISM.exe /Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~0.0.1.0二、chrome浏览器驱动安装 1.windows系统 第一步&#xff1a;确定自己的电脑里有安装的chrome浏览器&#xf…