Java和Python分别实现直接选择排序

时间:2023-12-27 23:31:37

1.基本思想

  将指定排序位置与其他数组元素分别对比,如果满足条件就进行交换。个人理解其实就是每趟循环从数组里选一个最大的值(最小的值)放到数组最后(最前)。

2.算法实现

  这里以每趟循环从数组中选择一个最大的值来实现。可知,只需进行 n-1次循环,便能完成排序。

  Java实现代码如下:

 public class SelectSort {
public static void main(String[] args) {
int arr[] = {64,4,24,1,3,15};
SelectSort sorter = new SelectSort();
sorter.sorted(arr);
} public void sorted(int arr[]) {
for(int i = 0;i < arr.length - 1;i++) {//循环n-1次,每次循环确定一个值的位置
int index = 0;
for(int j = 0;j < arr.length - i;j++) {//比较元素的个数每次会减少一个
if(arr[index] < arr[j]) {//每次循环选择出一个最大的值,并用index标记位置
index = j;
}
}
//实现指定位置与index标记位置的元素交换
int temp = arr[arr.length-i-1];
arr[arr.length-i-1] = arr[index];
arr[index] = temp;
}
showArray(arr);
} public void showArray(int arr[]) {
for(int i = 0;i < arr.length;i++) {
if(i < arr.length - 1) {
System.out.print(arr[i]+"、");
}else {
System.out.print(arr[i]);
}
}
}
}

Python代码实现如下:

# -*- coding: utf-8 -*-

def SelectSort(list1):
for i in range(len(list1)-1)://循环n-1次
index = 0
for j in range(len(list1)-i)://比较元素个数随循环次数递减
if lsit1[index] < list1[j]:
index = j
temp = list1[len(list1)-1-i]
list1[len(list1)-1-i] = list1[index]
list1[index] = temp
print("第{}次排序结果为:\n".format(str(i+1)) + str(list1))
return list1 if __name__ == '__main__':
lista = [63,4,24,3,1,15]
list2 = SelectSort(lista)
print("最终结果为:\n"+str(list2))