排序演算法三--選擇排序
選擇排序(SelctionSort)
-
基本思想:
在長度為N的無序陣列中,第一次遍歷n-1個數,找到最小的數值與第一個元素交換;
第二次遍歷n-2個數,找到最小的數值與第二個元素交換;
。。。
第n-1次遍歷,找到最小的數值與第n-1個元素交換,排序完成。 -
過程:
平均時間複雜度:O(n2)
java程式碼實現:
public static void select_sort(int array[],int lenth){ for(int i=0;i<lenth-1;i++){ int minIndex = i; for(int j=i+1;j<lenth;j++){ if(array[j]<array[minIndex]){ minIndex = j; } } if(minIndex != i){ int temp = array[i]; array[i] = array[minIndex]; array[minIndex] = temp; } } }
相關推薦
排序演算法三--選擇排序
選擇排序(SelctionSort) 基本思想: 在長度為N的無序陣列中,第一次遍歷n-1個數,找到最小的數值與第一個元素交換; 第二次遍歷n-2個數,找到最小的數值與第二個元素交換; 。。。 第n-1次遍歷,找到最小的數值與第n-1個元素交換,排序完成。 過程:
排序演算法之選擇排序(直接選擇、堆排序)
排序演算法穩定性 假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序後的序列中,r[i]仍在r[j]之前,則稱這種排序演算法是穩定的;否則稱為不穩定的。 ————百度百
經典排序演算法之--選擇排序
瞭解了前兩種排序演算法,再來看選擇排序已經很簡單了,它的思路是: 從一堆序列中,選擇一個最小的數,作為新的有序序列的頭,剩下的元素依次重複這一過程。 核心程式碼如下: for(int i=0;i<a.length;i++
c#程式碼實現排序演算法之選擇排序
選擇排序的平均時間複雜度為O(n²),最好時間複雜度為O(n²),最壞時間複雜度為O(n²),空間複雜度為O(1),是一種不穩定的演算法。 1.將整個記錄序列劃分為有序區和無序區,初始時有序區為空,無序區含有待排序的所有記錄。 2.在無序區查詢值最小的記錄,將它與無序區的第一個記
排序演算法之選擇排序(關鍵詞:資料結構/演算法/排序演算法/選擇排序)
假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 選擇排序演算法 程式碼 from swap import swap def select_sort(nums): n = len(nums) i = 0 while
排序演算法3---選擇排序
選擇排序 基本思想:每一趟(例如第i趟,i=0,1,…,n-2)在後面n-i個待排序的資料元素集合中選出關鍵碼最小的資料元素,作為有序元素序列的第i個元素,待到第n-2趟做完,待排序元素集合中只剩 下1個元素,排序結束。 時間複雜度: O(n^2) 空間複雜度: O(1) 穩 定 性
【排序演算法】選擇排序(Selection sort)
0. 說明 選擇排序(Selection sort)是一種簡單直觀的排序演算法。 它的工作原理如下。 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完
排序演算法:選擇排序,直接插入排序,氣泡排序
package com.Algorithm.Search_Sort; import java.util.Arrays; public class Sort { public int array[] = {99,34,76,92,34,17,77,41,40,36,6}; //
PHP排序演算法之選擇排序
二、選擇排序 原理: 在一列數字中,選出最小數與第一個位置的數交換。然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後一個數比較為止。(以下都是升序排列,即從小到大排列) 舉例說明: $arr = array(6, 3, 8, 2, 9, 1); 第一輪:
排序演算法之選擇排序演算法【java實現】
簡介:遍歷陣列,每次選出最小的數與索引第一個進行交換,直到全部完成。 package zhgyu.sort; /** /*選擇排序演算法 * @author zhgyu * */ public class SelectionSort { static final int SIZE =
十大經典排序演算法之選擇排序(Selection Sort)
選擇排序(Selection-sort)是一種簡單直觀的排序演算法。 它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。 2.1 演算法描
Kata系列之排序演算法的選擇排序
Kata系列之排序演算法的選擇排序 /*** 簡單選擇排序* 一個原地(in-place)排序,適用於小檔案。* 由於選擇操作時基於鍵值的且交換操作只在需要時才執行,* 所以選擇排序長使用者數值較大和鍵值較小的檔案。* * 在未排序序列中找到最小元素,存放到排序序列的起始位置
java基本排序演算法之選擇排序和插入排序
一.選擇排序 一種簡單直觀的排序演算法,特點是效率低,容易實現,速度較氣泡排序快。 思想:遍歷,每一趟從待排序的序列裡取出一個最小的數排在排好序的序列裡面,剩下的重複上述步驟直到排完。 比較簡單直接貼程式碼: public static void xuanze(int
排序演算法之-選擇排序
假定arr是一個具有n=5個元素的整數陣列{50,20,40,75,35} 遍0:選擇索引1處的整數20,交換arr[1]和arr[0]中的元素 遍1:選擇索引4處的整數35,交換arr[4]和arr[1]中的元素 遍2:選擇索引2處的整數40,交換arr[2]和arr[2]中的元素
九大排序演算法之選擇排序(原理及實現)
1、演算法思想:選擇排序,從頭至尾掃描序列,找出最小的一個元素,和第一個元素交換,接著從剩下的元素中繼續這種選擇和交換方式,最終得到一個有序序列。 2、演算法過程 舉個栗子(第一趟的排序過程) 原始序列:49、38、65、97、76、13、27、49 1)在進行選擇排
資料結構-排序演算法之選擇排序
選擇排序 一、基本演算法思想 從第i趟中排序序列,序列後的n-i+1個元素中選擇一個最小j的元素,與該n-i+1進行交換,每一趟都是從未排好的序列中進行選擇一個最小的元素與未排好序列的第一個元素進行交換。 二、例如 有這樣一個元素序列1,34,56,7,54,63,5
Java常見排序演算法之選擇排序詳解
一、簡介 選擇排序,就是每一趟從待排序的序列中選出最小的元素,順序放在已排好序的序列最後,直到全部序列排序完畢。簡單理解就是假設一個最小值,將剩餘的未排序的序列與假設的最小值進行比較,如果發現比假設的最小值還小的值,那麼將它與假設的最小值調換位置。 二、排序思路 排序思
排序演算法總結-選擇排序、插入排序、歸併排序和快速排序
前言: 感覺好久沒寫部落格了,十月份的計劃是:要開始深入攻克資料結構和演算法,耽誤好久了,這都月末了,抓緊時間又學習了一波,趕緊來分享了一下,使用的語言是C++,最開始學資料結構一定要用C,掌握紮實之後,想學演算法,用C++比較好,C封裝沒有那麼好,寫起來沒有那麼容易了。 一、準備工作
Java排序演算法(三)--歸併排序(MergeSort)遞迴與非遞迴的實現
歸併有遞迴和非遞迴兩種。 歸併的思想是: 1.將原陣列首先進行兩個元素為一組的排序,然後合併為四個一組,八個一組,直至合併整個陣列; 2.合併兩個子陣列的時候,需要藉助一個臨時陣列,用來存放當前的
八大排序演算法之選擇排序
選擇排序—簡單選擇排序(Simple Selection Sort) 此文章前半部分--》》簡單選擇排序是另一位大哥寫的部落格:http://blog.csdn.net/hguisu/article/details/7776068 但是我這想要說的是後半部分雙向選擇排序,