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


    1.基本思想

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

    2.算法实现

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

      Java实现代码如下:

     1 public class SelectSort {
     2     public static void main(String[] args) {
     3         int arr[] = {64,4,24,1,3,15};
     4         SelectSort sorter = new SelectSort();
     5         sorter.sorted(arr);
     6     }
     7     
     8     
     9     public void sorted(int arr[]) {
    10         for(int i = 0;i < arr.length - 1;i++) {//循环n-1次,每次循环确定一个值的位置
    11             int index = 0;
    12             for(int j = 0;j < arr.length - i;j++) {//比较元素的个数每次会减少一个
    13                 if(arr[index] < arr[j]) {//每次循环选择出一个最大的值,并用index标记位置 
    14                     index = j;
    15                 }
    16             }
    17                         //实现指定位置与index标记位置的元素交换
    18             int temp = arr[arr.length-i-1];
    19             arr[arr.length-i-1] = arr[index];
    20             arr[index] = temp;
    21         }
    22         showArray(arr);
    23     }
    24     
    25     
    26     public void showArray(int arr[]) {
    27         for(int i = 0;i < arr.length;i++) { 
    28             if(i < arr.length - 1) {
    29                 System.out.print(arr[i]+"、");
    30             }else {
    31                 System.out.print(arr[i]);
    32             }
    33         }
    34     }
    35 }

    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("第{}次排序结果为:
    ".format(str(i+1)) + str(list1))
        return list1
    
    if __name__ == '__main__':
        lista = [63,4,24,3,1,15]
        list2 = SelectSort(lista)
        print("最终结果为:
    "+str(list2))
  • 相关阅读:
    BZOJ1941Hide and Seek
    数学与树学(娱乐向)
    树状数组(模板)
    BZOJ2716天使玩偶
    BZOJ3262陌上花开
    BZOJ3781小B的询问
    BZOJ3236作业
    Bsgs模板
    HNOI2008明明的烦恼
    BZOJ1211树的计数
  • 原文地址:https://www.cnblogs.com/xiang9286/p/9638548.html
Copyright © 2020-2023  润新知