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 ;
    }



}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章