C语言——冒泡排序法 与 选择排序法

一,冒泡排序法

  代码演示:

#include<stdio.h>
void printLink(int *arry,int len)   //遍历打印数组所有数据
{
        int i;
        for(i = 0 ; i<len ; i++){
                printf("%d ",*(arry++) );
        //      arry++;
        }
        putchar('\n');

}
int main(){

        int i,j;
        int arry[] = {12,8,13,9,6,18,20,14,88,100,11,17,6};
        int len = sizeof(arry)/sizeof(arry[0]);
        int bei;

        printLink(arry,len);    //遍历打印数组所有数据

        for(i = 0 ; i < len-1 ; i++ ){             //冒泡排序的程序逻辑
                for(j = 0 ; j < len-1-i ; j++ ){
                        if(arry[j] > arry[j+1] ){   //从小到大顺序排序

                                bei = arry[j];
                                arry[j] = arry[j+1];
                                arry[j+1] = bei;

                        }
                }
        }

        printLink(arry,len);   //遍历打印数组所有数据 ,排完顺序

        return 0;
}
 运行结果
./a.out
12 8 13 9 6 18 20 14 88 100 11 17 6 
6 6 8 9 11 12 13 14 17 18 20 88 100 
二,选择排序法
include<stdio.h>
void printLink(int *arry,int len)
{
        int i;
        for(i = 0 ; i<len ; i++){
                printf("%d ",*(arry++) );
        //      arry++;
        }
        putchar('\n');


}
int main(){

        int i,j;
        int arry[] = {12,8,13,9,19,51,100,13};
        int len = sizeof(arry)/sizeof(arry[0]);
        int bei;

        printLink(arry,len);

 
        for(i = 0 ; i < len-1 ; i++ ){                //选择排序法的逻辑
                for(j = 0 ; j < len-1-i ; j++ ){
                        if(arry[i] > arry[j+i+1] ){ 

                                bei = arry[i];
                                arry[i] = arry[j+i+1];
                                arry[j+i+1] = bei;

                        }
                }
        }

        printLink(arry,len);        //打印排号序的数组

        return 0;
}
~                                                                                                          
~                                                                                                          
~                       

运行结果

./a.out
12 8 13 9 19 51 100 13 
8 9 12 13 13 19 51 100 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值