1. 程式人生 > >選擇排序演算法(Selection Sort)

選擇排序演算法(Selection Sort)

【選擇排序演算法基本思想和案例】
選擇排序:          每一趟從待排序的資料元素中選出最小(或者最大)的一個元素,順序放在已經排好序的數列的後面,直到全部待排序的資料元素排完。  案例:          初始陣列資源【63    4    24    1    3    15】          第一趟排序後【15    4    24    1    3】 63          第二趟排序後【15    4     3    1】 24   63          第三趟排序後【  1    4     3】15   24   63          第四趟排序後【  1    3】 4    15   24   63
         第五趟排序後【  1】 3     4   15   24   63 演算法主要程式碼:
  1. // 定義方法實現選擇排序
  2. publicstaticvoid selectionSort(int[] array){
  3. int count =1;
  4. while(count >=1){
  5. int index =0;
  6. int max = array[0];
  7. for(int i =1; i <= array.length - count; i++){
  8. if(max < array[i]){
  9. max = array[i];
  10. index = i;
  11. }
  12. }
  13. int temp = array[
    array.length - count];
  14. array[array.length - count]= max;
  15. array[index]= temp;
  16. count++;
  17. if(count == array.length -1){
  18. break;
  19. }
  20. }
  21. }
  22. }
案例:
  1. publicclassSelectSort{
  2. publicstaticvoid main(String[] args){
  3. int[] array ={63,4,24,1,3,15};
  4. System.out.println("排序前:");
  5. for(int i : array){
  6. System.out.print(i +"\t");
  7. }
  8. System.out.println();
  9. selectionSort(array);
  10. System.out.println("排序後:");
  11. for(int i : array){
  12. System.out.print(i +"\t");
  13. }
  14. }
  15. // 定義方法實現選擇排序
  16. publicstaticvoid selectionSort(int[] array){
  17. int count =1;
  18. while(count >=1){
  19. int index =0;
  20. int max = array[0];
  21. for(int i =1; i <= array.length - count; i++){
  22. if(max < array[i]){
  23. max = array[i];
  24. index = i;
  25. }
  26. }
  27. int temp = array[array.length - count];
  28. array[array.length - count]= max;
  29. array[index]= temp;
  30. count++;
  31. if(count == array.length -1){
  32. break;
  33. }
  34. }
  35. }
  36. }

相關推薦

選擇排序演算法Selection Sort

【選擇排序演算法基本思想和案例】 選擇排序:          每一趟從待排序的資料元素中選出最小(或者最大)的一個元素,順序放在已經排好序的數列的後面,直到全部待排序的資料元素排完。  案例:  

C++ 雙向氣泡排序演算法Shaker Sort

一、概念(來源於百度百科)        傳統冒泡演算法原理        氣泡排序演算法的運作如下:(從後往前)             &nbs

簡單選擇排序演算法泛型

main.cpp #include "SelectSort.h" int main() { int r[8] = {0,49,27,65,97,76,13,38}; SelectSort(r, 7); return 0; } SelectSort.h #includ

十大經典排序演算法選擇排序Selection Sort

選擇排序(Selection-sort)是一種簡單直觀的排序演算法。 它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。  2.1 演算法描

選擇排序Selection sort

選擇排序算是對氣泡排序的一種改進:假設有n個待排列的資料,在第一輪遍歷中,仍進行n - 1次比較,遍歷的時候用當前數與當前獲得的最大數進行比較,而不是相鄰的資料進行比較,且僅進行一次資料交換。而氣泡排序在每一次比較的過程中,發現數據順序不一致就交換,資料交換的次數更多。選擇排序只需要用標記記住每一輪的最大數,

一、選擇排序Selection sort

一、選擇排序         選擇排序(Selection sort)是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素

算法系列——選擇排序Selection Sort

選擇排序(Selection sort)是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。時間複雜度是O(n^2)。 在完全隨機陣列的條件下

(排序演算法)linux c語言實現選擇排序演算法氣泡排序的略微改進版

 快速排序演算法和氣泡排序演算法是差不多的,都是要兩層迴圈,外迴圈是要比較的個數,其實就是元素的個數,內迴圈就是外層那個標記和其他的比較大小, 氣泡排序是相鄰的兩個,兩兩比較,最後交換出一個最大或者最小值, 快速排序是在氣泡排序的基礎上,找出那個最小的或者最大的,但是不是直接交換,

排序演算法sorting algorithm之 插入排序insertion sort

https://en.wikipedia.org/wiki/Insertion_sort   loop1: 4,6,1,3,7 -> 4,6,1,3,7 loop2: 4,6,1,3,7 -> 4,1,6,3,7         &nb

六大經典排序演算法Java版:冒泡、選擇、插入、希爾、快速、歸併

/** * @author Darren * @Date 2016-10-17 */ public class Main { public static void main(String[] args) { int[] ars = {

python 實現 列表 選擇排序 演算法兩種方法實現

方法一:(remove方法) arr = [2, 3, 5, 6, 4, 1, 9] #找出最小元素 def findsmallest(arr): smallest = arr[0] #假設第一個元素為最小值 for i in range(1,len(arr)):

經典排序演算法Java版

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java中常用的排序演算法動態演示

1.前言 這篇文章講解的是Java中或者面試中常用的**排序演算法**。 文章中例項  [linhaojian的Github](https://github.com/linhaojian 2.複雜度 相關概率

十大經典排序演算法附程式

轉自https://www.cnblogs.com/onepixel/articles/7674659.html 0、演算法概述 0.1 演算法分類 十種常見排序演算法可以分為兩大類: 非線性時間比較類排序:通過比較來決定元素間的相對次序,由於其時間複雜度不能突破O(nlog

實現奇偶數排序演算法JAVA實現

給定一個整數陣列,請調整陣列的順序,使得所有奇數位於陣列前半部分,所有偶數位於陣列後半部分,時間複雜度越小越好。 package com.sort; import java.util.Arrays; public class TestSort { /** * 測試方法 * @par

排序演算法Java隨筆—歸併排序

歸併排序(Merge Sort):將多個有序資料表合併為一個有序資料表,如果被合併的資料表只有兩個,則叫二路歸併。 二路歸併排序的原理步驟: 將長度為n的原資料表分割為n個長度為1的子表,兩兩合併得

資料結構常見的八大排序演算法詳細整理

2018年11月01日 21:38:04 雲淡風輕_737711464 閱讀數:3 個人分類: 資料結構

(排序演算法)linux c語言實現簡化版本的插入排序演算法二分插入

 二分插入演算法是在已經排序好的序列裡插入一個元素,是穩定的演算法,關鍵詞是折中。 比如說我要在12345678910裡插入一個3,那麼我先看看中間的數比3大,還是比3小,要是比3大,我就去後一半,如果是比3小,我就去前一半,現在進入某個一半後,再做如此操作,最後將其他的元

排序演算法python實現

排序演算法一共有2類:    演算法時間fuzh複雜讀與nlogn比較,大為非線性類,小為線性類;         非線性類比較類排序有:交換排序(冒泡,快速),插入排序(簡單插入,shell),歸併排序(2路歸併,多路歸併),選擇排序(簡單選擇,堆排序);      

歸併排序演算法C語言

歸併排序: 思想:利用將兩個的有序資料序列合併成一個新的有序資料序列,在如何分成兩個有序資料的問題下,採用分治演算法。 時間複雜度:O(n*logn) 空間複雜度:O(n) 是否穩定: 穩