良许Linux教程网 干货合集 详解选择排序

详解选择排序

选择排序(Selection sort)是一种简单直观的排序算法。其基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

详解选择排序

算法步骤

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

重复第二步,直到所有元素均排序完毕。

动图演示

什么是选择排序?什么是选择排序?
什么是选择排序?什么是选择排序?

代码实现

JavaScript 代码实现

实例

function selectionSort(arr) {
   var len = arr.length;
   var minIndex, temp;
   for (var i = 0; i for (var j = i + 1; j if (arr[j] return arr;
}

Python 代码实现

实例

def selectionSort(arr):
   for i in range(len(arr) - 1):
       # 记录最小数的索引
       minIndex = i
       for j in range(i + 1, len(arr)):
           if arr[j] # i 不是最小数时,将 i 和最小数进行交换
       if i != minIndex:
           arr[i], arr[minIndex] = arr[minIndex], arr[i]
   return arr

Go 代码实现

实例

func selectionSort(arr []int) []int {
       length := len(arr)
       for i := 0; i for j := i + 1; j if arr[min] > arr[j] {
                               min = j
                       }
               }
               arr[i], arr[min] = arr[min], arr[i]
       }
       return arr
}

Java 代码实现

实例

public class SelectionSort implements IArraySort {

   @Override
   public int[] sort(int[] sourceArray) throws Exception {
       int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);

       // 总共要经过 N-1 轮比较
       for (int i = 0; i for (int j = i + 1; j if (arr[j] if (i != min) {
               int tmp = arr[i];
               arr[i] = arr[min];
               arr[min] = tmp;
           }

       }
       return arr;
   }
}

PHP 代码实现

实例

function selectionSort($arr)
{
   $len = count($arr);
   for ($i = 0; $i $len - 1; $i++) {
       $minIndex = $i;
       for ($j = $i + 1; $j $len; $j++) {
           if ($arr[$j] $arr[$minIndex]) {
               $minIndex = $j;
           }
       }
       $temp = $arr[$i];
       $arr[$i] = $arr[$minIndex];
       $arr[$minIndex] = $temp;
   }
   return $arr;
}

C 语言

实例

void swap(int *a,int *b) //交換兩個變數
{
   int temp = *a;
   *a = *b;
   *b = temp;
}
void selection_sort(int arr[], int len)
{
   int i,j;

       for (i = 0 ; i for (j = i + 1; j if (arr[j] 

C++

实例

template //整數或浮點數皆可使用,若要使用物件(class)時必須設定大於(>)的運算子功能
void selection_sort(std::vector& arr) {
       for (int i = 0; i for (int j = i + 1; j if (arr[j] 

C#

实例

static void selection_sort(T[] arr) where T : System.IComparable{//整數或浮點數皆可使用
       int i, j, min, len = arr.Length;
       T temp;
       for (i = 0; i for (j = i + 1; j if (arr[min].CompareTo(arr[j]) > 0)
                               min = j;
               temp = arr[min];
               arr[min] = arr[i];
               arr[i] = temp;
       }
}

Swift

实例

import Foundation
/// 选择排序
///
/// - Parameter list: 需要排序的数组
func selectionSort(_ list: inout [Int]) -> Void {
   for j in 0..for i in j..if list[minIndex] > list[i] {
               minIndex = i
           }
       }
       list.swapAt(j, minIndex)
   }
}

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

img
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部