程序中常用的排序算法主要有十种,虽然我们在平时写业务代码中很少接触到要自己直接去写排序算法的,一般都是使用工具类,但平时多了解这些算法的思路对我们还是很有益,特别是在看一些源代码或者面试时,笔者之前面试就经常遇到要手写一些常用排序算法情况,今天我来讲下选择排序。
选择排序的思路其实是比较好理解的。首先循环找到最小的元素,将其与第一个元素互换(这样第一个位置的元素就是最小的了),接着循环找到第二个最小的元素,将其与第二个位置的元素互换,以此类推,直到每个元素都正确排序。
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的路上。
最后附上一张各算法的对比图: