未经同意,请勿转载!如有收货,请留一赞,不胜感激!
同时欢迎加入我们的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 ",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)