算法学习之选择排序

Posted xunxian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法学习之选择排序相关的知识,希望对你有一定的参考价值。

  • 从一个数组中每次选出一个最大或者最小的值,然后把它放到一个新的数组中,新生成的数组就是一个按顺序的数组。

  • 技术图片

  • Python代码实现:

      #找最小值的函数
      def findSmallest(arr):
          smallest = arr[0]
          smallest_index = 0
          for i in range(1,len(arr)):
              if arr[i] < smallest:
                  smallest = arr[i]
                  smallest_index = i
          return smallest_index
      #排序方法
      def selectionSort(arr):
          newArr = []
          for i in range(len(arr)):
              smallest = findSmallest(arr)
              newArr.append(arr.pop(smallest))
          return newArr
      #使用
      print selectionSort([5,3,4,1,2])
  • Java代码实现:
      public class SelectSort {	
          //使用
          public static void main(String[] args) {
              int[] arr = new int[] { 5,3,4,1,2};
              selectSort(arr);
              for (int i = 0; i < arr.length; i++) {
                  System.out.print(arr[i] + " ");
              }
          }
       	//排序算法
          public static void selectSort(int[] arr) {
              for (int i = 0; i < arr.length - 1; i++) {
                  int minIndex = i; 
                  for (int j = i + 1; j < arr.length; j++) {
                      if (arr[j] < arr[minIndex]) {
                          minIndex = j; 
                      }
                  }
                  if (i != minIndex) {
                      int temp = arr[i];
                      arr[i] = arr[minIndex];
                      arr[minIndex] = temp;
                  }
              }
          }
      }
      //排序算法
      function selectionSort(arr) {
        const length = arr.length;
        for (let i = 0; i < length - 1; i++) {
          let minIndex = i;
          for (let j = i + 1 ; j < length ; j++) {
            if (arr[j] < arr[minIndex]) {
              minIndex = j;
            }
          }
          if (minIndex !== i) {
            const temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
          }
        }
      }

以上是关于算法学习之选择排序的主要内容,如果未能解决你的问题,请参考以下文章

[一周一算法]算法导论学习之计数排序

算法学习之希尔排序的简洁实现

算法学习之排序算法(高速排序)

算法学习之排序:冒泡排序

算法学习之排序:插入排序

python学习之排序算法