C语言算法

算法概览:

这里写图片描述

插入排序

#include<stdio.h>
#include<stdlib.h>



int main(void)
{
    int a[7]={12,5,2,6,4,8,7};     //定义一个需要排列的数组
    int i ,temp,p;            //定义三个变量
    for(i=1;i<7;i++){       
    //从数据第二位开始取对比数,进行对比,直至数组最后一位结束循环
        temp=a[i];            //取第一个对比数
        p = i-1;   

        while(p>=0 && temp<a[p])    //寻找对比数大于所认定的排序的位置
        {
            a[p+1]=a[p];         //后移一位
                p--;           //与需要对比的数组前一位继续对比
        }
        a[p+1]=temp;           //将对比数插入对应位置
    }

    for(i=0;i<7;i++){              //循环输出数组
        printf("%d\n",a[i]); 
    }
}

SHELL排序

void shellSort(int a[],int n){
    int gap,i,j,temp;

    for(gap=n/2;gap>0;gap/=2){
        for(i=gap;i<n;i++){
            for(j=i-gap;j>=0 && a[j]>a[j+gap];j-=gap){
                temp = a[j];
                a[j] = a[j+gap];                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

                a[j+gap] = temp;


            }



        }



    }


}

冒泡排序

void buble_sort(int a[],int n){
    int temp;

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

        }



    }





}







快速排序算法

void quick_sort(int a[],int low,int high){
    int i = low;       //定义低位
    int j = high;       //定义低位
    int temp =a[i];     //取出对比数

    if(low<high){
        while(a[j]>=temp && i<j){j--;} //从后往前扫描,寻找比对比数temp小的数
        a[i]=a[j];
        while(a[i]<=temp && i<j){i++;} //从前往后扫描,寻找比对比数temp大的数
        a[j]=a[i];

        a[i] = temp;  /*当在当组内找完一遍以后就把中间数temp回归*/
        //一分为二,重复调用(第一部分小于第一部分)
        quick_sort(a,low,i-1); //递归调用
        quick_sort(a,i+1,high);//递归调用




    }else{


    return ;
    }



}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值