常见排序算法之选择排序

程序中常用的排序算法主要有十种,虽然我们在平时写业务代码中很少接触到要自己直接去写排序算法的,一般都是使用工具类,但平时多了解这些算法的思路对我们还是很有益,特别是在看一些源代码或者面试时,笔者之前面试就经常遇到要手写一些常用排序算法情况,今天我来讲下选择排序。

选择排序的思路其实是比较好理解的。首先循环找到最小的元素,将其与第一个元素互换(这样第一个位置的元素就是最小的了),接着循环找到第二个最小的元素,将其与第二个位置的元素互换,以此类推,直到每个元素都正确排序。

java版本:

public class ThreadPoolDemo {

	

	public static void main(String[] args) {

		

		int[] arr={10, 8, 99, 7, 1, 5, 88, 9};

		for (int i = 0; i < arr.length-1; i++) {

			//所有的元素都和第个元素相比较

			int min=i;

			for (int j = i+1; j < arr.length; j++) {

				//j位置的元素更小,目前的min就是j,进行赋值

				if (arr[j]<arr[min]) {

					min=j;

				}

			}

			//找到后进行位置互换

			int temp=arr[i];

			arr[i]=arr[min];

			arr[min]=temp;

		}

		System.out.println(Arrays.toString(arr));

	}

	

}

python版本:

list=[10, 8, 99, 7, 1, 5, 88, 9]

length=len(list)

for i in  range(length):

    min=i

    for j in range(i+1,length):

        if list[j]<list[min]:

            min=j

    list[i],list[min]=list[min],list[i]

print(list)

二者都会输出:[1, 5, 7, 8, 9, 10, 88, 99]

我们也可以看到python版本的代码量确实会少些,所以人生苦短,我用python这话不无道理。另外有了java基础再学习python,真的会很容易上手。笔者也在继续学习python的路上。

最后附上一张各算法的对比图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值