史上最详细的C语言和Python的选择排序算法

未经同意,请勿转载!如有收货,请留一赞,不胜感激!

同时欢迎加入我们的qq交流群:326079727

话不多说上代码:

C语言:

//选择排序走起
//原理:吃透原理再去实现,选择排序也是类似于冒泡排序,时间复杂度也是O^2,外层循环是十轮。
// 每轮都找出最小值,然后把它放到最前,已经放在前面的 下一轮就不用再去比较
void choice(){
    int init_arr[10] = {1,5,9,8,7,6,7,99,8,10};
    //获取数组的长度,因为c语言的每个int型占四个字节,所除以4
    int len = sizeof(init_arr)/4;
    int tmp;
    for (int i = 0; i < len; i++) {
        //int mix=init_arr[i];//初始化最小值为mix为数组的第一个数
        for (int j = i; j < len; j++) {//内层循环遍历,找出最小值,这里要从i位开始遍历,因为已经放在前面的(i之前的) 下一轮就不用再去比较
            if (init_arr[j]<init_arr[i]){//如何其中的值比当前的init_arr[i]值还要小则交换数值
                tmp = init_arr[i];
                init_arr[i]=init_arr[j];
                init_arr[j] = tmp;
            }
        }//完成一轮for则能找出这其中的最小值,然后放到前面,等下一轮会初始化最小值为init_arr[i+1]
    }
    for (int k = 0; k < len; k++) {//循环遍历打印
        printf("%d\n",init_arr[k]);
    }
}

Python:

#选择排序走起
def choice():
    list=[5,9,88,99,54,66,77,315,88,315,21]
    #选择排序,顾名思义就是选择,每轮选出最小的值来,然后放到前面.
    for i in range(0,len(list)):#外层循环,一轮找一个最小值
        for j in range(i,len(list)):#内层循环,遍历列表,比较初始值与list[j]的大小,如果大,则把最小值赋给list[i],继续j++
            if (list[i]>list[j]):
                list[j],list[i]=list[i],list[j]
            j+=1#j++继续比较下一个数
        i+=1#i++进行下一轮
    for k in list:#遍历打印
        print(k)

猜你喜欢

转载自www.cnblogs.com/szj666/p/11865632.html