Skip to content

Latest commit

 

History

History
215 lines (177 loc) · 4.34 KB

README.md

File metadata and controls

215 lines (177 loc) · 4.34 KB

选择排序

选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。

代码示例

Python3

defselection_sort(arr): n=len(arr) foriinrange(n-1): min_index=iforjinrange(i+1, n): ifarr[j] <arr[min_index]: min_index=jarr[min_index], arr[i] =arr[i], arr[min_index] arr= [26, 11, 99, 33, 69, 77, 55, 56, 67] selection_sort(arr) print(arr)

Java

importjava.util.Arrays; publicclassSelectionSort { privatestaticvoidselectionSort(int[] nums) { for (inti = 0, n = nums.length; i < n - 1; ++i) { intminIndex = i; for (intj = i; j < n; ++j) { if (nums[j] < nums[minIndex]) { minIndex = j; } } swap(nums, minIndex, i); } } privatestaticvoidswap(int[] nums, inti, intj) { intt = nums[i]; nums[i] = nums[j]; nums[j] = t; } publicstaticvoidmain(String[] args) { int[] nums = {1, 2, 7, 9, 5, 8}; selectionSort(nums); System.out.println(Arrays.toString(nums)); } }

C++

#include<iostream> #include<vector>usingnamespacestd;voidprintvec(const vector<int>& vec, const string& strbegin = "", const string& strend = "") { cout << strbegin << endl; for (auto val : vec) { cout << val << "\t"; } cout << endl; cout << strend << endl; } voidselectsort(vector<int>& vec) { for (int i = 0; i < vec.size() - 1; i++) { int minidx = i; for (int j = i + 1; j < vec.size(); j++) { if (vec[minidx] > vec[j]) { minidx = j; } } swap(vec[i], vec[minidx]); } } intmain(void) { vector<int> vec = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; printvec(vec); selectsort(vec); printvec(vec, "after insert sort"); return (0); }

Go

package main import"fmt"funcselectionSort(nums []int) { fori, n:=0, len(nums); i<n-1; i++ { minIndex:=iforj:=i+1; j<n; j++ { ifnums[j] <nums[minIndex] { minIndex=j } } nums[minIndex], nums[i] =nums[i], nums[minIndex] } } funcmain() { nums:= []int{1, 2, 7, 9, 5, 8} selectionSort(nums) fmt.Println(nums) }

Rust

fnselection_sort(nums:&mutVec<i32>){let n = nums.len();for i in0..n - 1{letmut min_index = i;for j in i..n {if nums[j] < nums[min_index]{ min_index = j;}}let temp = nums[min_index]; nums[min_index] = nums[i]; nums[i] = temp;}}fnmain(){letmut nums = vec![1,2,7,9,5,8];selection_sort(&mut nums);println!("{:?}", nums);}

JavaScript

functionselectionSort(inputArr){letlen=inputArr.length;for(leti=0;i<=len-2;i++){letj=i;letmin=j;while(j<=len-1){if(inputArr[j]<inputArr[min])min=j;j++;}lettemp=inputArr[i];inputArr[i]=inputArr[min];inputArr[min]=temp;}returninputArr;}letarr=[6,3,2,1,5];console.log(selectionSort(arr));

C#

usingstaticSystem.Console;namespacePro;publicclassProgram{publicstaticvoidMain(){int[]test=newint[]{90,12,77,9,0,2,23,23,3,57,80};SelectionSortNums(test);foreach(varitemintest){WriteLine(item);}}publicstaticvoidSelectionSortNums(int[]nums){for(intinitial=0;initial<nums.Length;initial++){for(intsecond_sort=initial;second_sort<nums.Length;second_sort++){if(nums[initial]>nums[second_sort]){swap(refnums[initial],refnums[second_sort]);}}}}privatestaticvoidswap(refintcompare_left,refintcompare_right){inttemp=compare_left;compare_left=compare_right;compare_right=temp;}}
close