1. 程式人生 > >演算法分析——選擇排序

演算法分析——選擇排序

選擇排序演算法

package com.zss.java.algorithm;
/**
 *選擇排序:每一趟從待排序的記錄中選出最小的元素,順序放在已經排好的序列最後,直到全部記錄排序完畢
 * 例如:給定陣列:int[] arr={裡面n個數據};第1趟排序,在待排序資料arr[1]~arr[n]中選出最小的資料,將它與arrr[1]交換;
 * 第2趟,在待排序資料arr[2]~arr[n]中選出最小的資料,將它與r[2]交換;以此類推
 * @author lemon
 * @date 2018/9/13 14:49
 */
public class SelectionSort {
    public
static void main(String[] args) { int[] arr={1,45,2,65,5,33,67,9,32}; System.out.println("交換之前:"); for(int num:arr){ System.out.print(num+" "); } //選擇排序的優化 for(int i = 0; i < arr.length - 1; i++) { int k = i; for(int
j = k + 1; j < arr.length; j++){ if(arr[j] < arr[k]){ //判斷最小的元素 k = j; //記錄最小值所在的位置 } } //一輪迴圈結束將最小的元素與第i列元素交換 if(i != k){ int temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; } } System.out.println(); System.out.println("交換後:"
); for(int num:arr){ System.out.print(num+" "); } } }

分析

排序演算法:線上性表中找到最小數,將其放表頭,然後在剩下的數中找到最小數,並放次位置;依次類推直到線性表完成排序。

排序n個元素,第一次迭代,比較次數為n-1;第二次迭代比較次數為n-2,以此類推。

設T(n)表示選擇排序的複雜度 ,c表示每次迭代中其他操作的總數

這裡寫圖片描述

相關推薦

演算法分析——選擇排序

選擇排序演算法 package com.zss.java.algorithm; /** *選擇排序:每一趟從待排序的記錄中選出最小的元素,順序放在已經排好的序列最後,直到全部記錄排序完畢 * 例如:給定陣列:int[] arr={裡面n個數據};第1趟

#簡單演算法知識--選擇排序(與氣泡排序對比分析

氣泡排序程式碼: 1,-23,-6,0,34,2,87,43,-65 //表示有多少輪比較 for(int i = 1;i<=arr.length-1;i++){ //表是每輪需要比較的次數 for(int j = 1;j<=arr.length-i;j++){

資料結構和演算法分析排序演算法--選擇排序(堆排序

選擇排序–堆排序 堆排序是一種樹形選擇的排序,是對直接選擇排序的有效改進。 (直接選擇排序:第一次選擇最小值,與第一位數交換,再從後面選擇最小的,和第二位數交換……直至排序結束,共n-1次) 基本思想: 堆的定義如下:具有n個元素的序列(k1,k2,…,

NOIP複賽複習(六)演算法分析排序模板

演算法分析 演算法分析的目的是預測演算法所需的資源,如計算時間(CPU 消耗)、記憶體空間(RAM 消耗)、通訊時間(頻寬消耗)等,以及預測演算法的執行時間,即在給定輸入規模時,所執行的基本運算元量,或者稱為演算法複雜度。 演算法的執行時間取決於輸入的資料特徵,輸入

排序演算法選擇排序(直接選擇、堆排序

排序演算法穩定性 假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,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

排序演算法三--選擇排序

選擇排序(SelctionSort) 基本思想: 在長度為N的無序陣列中,第一次遍歷n-1個數,找到最小的數值與第一個元素交換; 第二次遍歷n-2個數,找到最小的數值與第二個元素交換; 。。。 第n-1次遍歷,找到最小的數值與第n-1個元素交換,排序完成。 過程:

排序演算法3---選擇排序

選擇排序 基本思想:每一趟(例如第i趟,i=0,1,…,n-2)在後面n-i個待排序的資料元素集合中選出關鍵碼最小的資料元素,作為有序元素序列的第i個元素,待到第n-2趟做完,待排序元素集合中只剩 下1個元素,排序結束。 時間複雜度: O(n^2) 空間複雜度: O(1) 穩 定 性

排序演算法選擇排序(Selection sort)

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

python 資料結構與演算法 day04 選擇排序

1. 選擇排序 原理:從後面無序序列中選出最小的元素放在有序序列的後面,第一次先把第一個位置元素作為比較的物件,從後面n-1個元素中選出最小的那個元素 跟第一個位置元素進行交換,然後令第二個位置作為比較的物件,從後面n-2個元素中選最小的元素,跟第二個位置元素進行交換,,,以此類推;   下面

排序演算法選擇排序,直接插入排序,氣泡排序

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}; //

演算法(1) 選擇排序演算法 java

簡介:選擇排序是一個時間複雜度為O(N^2)的基本排序演算法,當然也有其適用的場景,比如說該演算法的易於實現的特性,可應用於對某些實際問題的快速實現上. 原理:從未排序的資料中,選出最小的資料,然後與未排序的第一個資料進行比較交換操作,直到所有的資料都排好序. 步驟: ①在未進行排

PHP排序演算法選擇排序

二、選擇排序   原理: 在一列數字中,選出最小數與第一個位置的數交換。然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後一個數比較為止。(以下都是升序排列,即從小到大排列)   舉例說明: $arr = array(6, 3, 8, 2, 9, 1);   第一輪:   

09_資料結構與演算法_選擇排序_Python實現

""" 選擇排序: 思路: 遍歷整個列表,找到最小項的位置。 如果該位置不是列表的第一個位置,演算法就會交換這兩個位置的項; 然後演算法回到第二個位置並重復這個過程 """ import random #定義一個交換函式 d

排序演算法選擇排序演算法【java實現】

簡介:遍歷陣列,每次選出最小的數與索引第一個進行交換,直到全部完成。 package zhgyu.sort; /** /*選擇排序演算法 * @author zhgyu * */ public class SelectionSort { static final int SIZE =

Java中的經典演算法選擇排序(SelectionSort)

Java中的經典演算法之選擇排序(SelectionSort) 神話丿小王子的部落格主頁 a) 原理:每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最後,直到全部記錄排序完畢。也就是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。基

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

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

java資料結構與演算法_____選擇排序

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