简单的排序方法汇总


#include<stdio.h>

//定义交换数值函数
void Swap(int* a,int* b);
//定义输出数组函数
void Print_arr(int a[],int size);
//简单插入排序
void Funs_Charu(int a[],int size);
//简单冒泡排序
void Funs_Maopao(int a[],int size);
//简单选择排序
void Funs_Xuanze(int a[],int size);
//快速排序启动函数
void quick(int a[],int low,int high);
//快速排序中心部分,返回中心值下标
int mid(int a[],int low,int high);
//快速排序主体部分,递归部分
void Funs_quick_start(int a[],int size);

//定义要排序的数组
int a[]={1,3,5,7,9,2,4,6,10};

//定义交换数值函数
void Swap(int* a,int* b)
{
    int temp=*a;
    *a=*b;
    *b=temp;
}

//定义输出数组函数
void Print_arr(int a[],int size)
{
    for(int i=0;i<size;i++)
    {
        printf("%d ",a[i]);
    }
}

//简单插入排序
void Funs_Charu(int a[],int size)
{
    for(int i=1;i<size;i++)
    {
        int temp=a[i];
        int cnt=i-1;
        for(int j=i+1;j<size;j++)
        {
            while (cnt>=0 && temp<a[cnt])
            {
                a[cnt+1]=a[cnt];
                cnt--;
            }
            a[cnt+1]=temp;

         }
    }
}

//简单冒泡排序
void Funs_Maopao(int a[],int size)
{   int temp;
    for(int i=0;i<size;i++)
    {
        for(int j=0;j<size-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
}

//简单选择排序
void Funs_Xuanze(int a[],int size)
{
    int min;
    for(int i=0;i<size;i++)
    {
        min=i;
        for(int j=i+1;j<size;j++)
        {
            if(a[min]>a[j])
            {
                min=j;
            }
        }
        Swap(&a[min],&a[i]);
    }
}

//快速排序

//快速排序启动函数
void Funs_quick_start(int a[],int size)
{
    quick(a,0,size-1);
}
//快速排序主体部分,递归部分
void quick(int a[],int low,int high)
{
    if(low<high)
    {    
    int c=mid(a,low,high);
    quick(a,low,c-1);
    quick(a,c+1,high);
    }
}
//快速排序中心部分,返回中心值下标
int mid(int a[],int low,int high)
{
    int cnt=a[high];
    int i=low;
    int j;
    for(j=low;j<high;j++)
    {
        if(cnt>a[j])
        {
            Swap(&a[j],&a[i++]);
        }
    }
    Swap(&a[high],&a[i]);
    return i;
}


int main()
{
    int size=sizeof(a)/sizeof(int);//求出数组元素的个数
    //Funs_Charu(a,size);
    //Funs_Maopao(a,size);
    //Funs_Xuanze(a,size);
    //Funs_quick_start(a,size);
     Print_arr(a,size);
    return 0;
}
posted @   风恬月淡时  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示