C语言四种常用排序

//冒泡排序 稳定

void sort1(int a[],unsignedint n){

    for (int i = 0; i < n ;i++) {

        for (int j = i +1; j < n  ;j++) {

            if(a[i]>a[j]){

                a[i] = a[j] + a[i];

                a[j] = a[i] - a[j];

                a[i] = a[i] - a[j];

            }

        }

    }

}


//选择排序 不稳定

void sort2(int a[],unsignedint n){

    int temp = 0;

    int index = 0;

    for (int i = 0; i < n ;i++) {

        temp = a[i];

        index = i;

        for (int j = i +1; j < n;j++) {

            if( a[j] < temp){

                temp = a[j];

                index = j;

            }

        }

        if(i==index){

            continue;

        }else{

            a[i] = a[index] + a[i];

            a[index] = a[i] - a[index];

            a[i] = a[i] - a[index];

        }

    }

}


//插入排序 稳定


void sort3(int a[],unsignedint n){

    int temp=0;

    for (int i = 0; i < n ;i++) {

        for (int j =0; j < i  ;j++) {

            if(a[i] < a[j]){

                temp = a[i];

                for(int k = i; k > j;k--){

                    a[k] = a[k-1];

                }

                a[j] = temp;

            }

        }

    }

}

 

void sortRecursive(int a[],int first,int last){

    int temp=0;

    int index=first;

    for(int i=first;i<=last;i++){

        if(a[i]<a[index]){

            temp = a[i];

            for(int k = i; k > index;k--){

                a[k] = a[k-1];

            }

            a[index] = temp;

            index++;

        }

    }

    if(last==first||last-first==1||first>last){

        return;

    }

    sortRecursive(a, first, index - 1);

    sortRecursive(a, index + 1, last);

}


//快速排序 不稳定

void sort4(int a[],unsignedint n){

    int i=0;

    int j=n-1;

    sortRecursive(a, i, j);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值