1. 程式人生 > >IOS演算法(二)之選擇排序

IOS演算法(二)之選擇排序

選擇排序:

每一趟從待排序的資料元素中選出最小(或最大)的一個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。

一. 演算法描述

選擇排序:比如在一個長度為N的無序陣列中,在第一趟遍歷N個數據,找出其中最小的數值與第一個元素交換,第二趟遍歷剩下的N-1個數據,找出其中最小的數值與第二個元素交換......第N-1趟遍歷剩下的2個數據,找出其中最小的數值與第N-1個元素交換,至此選擇排序完成。

以下面5個無序的資料為例:

56 12 80 91 20(文中僅細化了第一趟的選擇過程)

第1趟:12 56 80 91 20


第2趟:12 20 80 91 56

第3趟:12 20 56 91 80

第4趟:12 20 56 80 91

程式碼實現:

//  main.m

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

//  Created by lanouhn on 14-9-16.

//  Copyright (c) 2014 [email protected] All rights reserved.

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])

{

    int array[] = {12,2, 6, 9, 8, 5, 7, 1, 4};

//為了增加可移植性(採取sizeof())計算陣列元素個數count

    int count = sizeof(array) /sizeof(array[0]);

    //

    for (int i = 0; i < count - 1; i++) {   //比較的趟數

        int minIndex = i;//查詢最小值

        for (int j = minIndex +1; j < count; j++ ) {

            if (array[minIndex] > array[j]) {

                minIndex = j;

            }

        }

//如果沒有比較到最後還剩餘一個數,那麼就執行下面的操作

        if (minIndex != i) {

            //交換資料

            int temp = 0;

            temp = array[i];

            array[i] = array[minIndex];

            array[minIndex] = temp;

        }

    }

    for (int i = 0; i < count; i++) {

        printf("[%2d]: %d\n", i, array[i]);

    }

    return 0;

}




相關推薦

IOS演算法()選擇排序

選擇排序: 每一趟從待排序的資料元素中選出最小(或最大)的一個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。 一. 演算法描述 選擇排序:比如在一個長度為N的無序陣列中,在第一趟遍歷N個數據,找出其中最小的數值與第一

資料結構與演算法C++選擇排序

本篇文章是使用C++實現的選擇排序演算法,演算法複雜度為O(n2) 選擇排序演算法初始時在序列中找到最小元素,放到序列的起始位置作為已排序序列;然後,再從剩餘未排序元素中繼續尋找最小元素,放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。 如上圖陣列中有8個元素,首先將第一個元素

演算法學習選擇排序演算法的python實現

  ——參考自《演算法圖解》 1 def findSmallest(arr): 2 # 假設第一個元素最小 3 smallest = arr[0] 4 smallest_index = 0 5 for i in range(1,len(arr)): 6

一步一步寫演算法選擇排序

                【 宣告:版權所有,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    選擇排序是和氣泡排序差不多的一種排序。和氣泡排序交換相連資料不一樣的是,選擇排序只有在確定了最小的資料之後,才會發生交換。怎麼交換呢?我們可以以下面一組資料作為測試:

排序演算法選擇排序

原理: 每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。 思路: n個數進行n-1次排序 每一次排

演算法LOWB三人組選擇排序

選擇排序 思想是在一個列表中每次迴圈一遍,拿到最小值,接著再從剩下的無序區中繼續拿最小值,如此迴圈,直到結束。 # 最簡單的一個選擇排序,迴圈一個列表,拿到最小值,新增到一個新列表,之後在列表中刪除這個最小值,繼續再剩下的值中找最小值,往復迴圈。 def select_sort_simple(li):

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

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

演算法--排序選擇排序

三種簡單排序的區別:      氣泡排序是 未排序部分,相鄰元素之間兩兩比較移動,從而找出最值。      插入排序是 某個待排序元素與以排元素兩兩比較,   從而找到待排元素所應在

從零開始學演算法選擇排序

從零開始學演算法(二)選擇排序 選擇排序 演算法介紹 演算法原理 演算法簡單記憶說明 演算法複雜度和穩定性 程式碼實現 選擇排序 程式碼是Javascript語言寫的(幾乎是虛擬碼) 演算

PHP排序演算法選擇排序

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

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

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

iOS學習十選擇器控制元件UIPickerView

UIPickerView是一個簡易的列表控制元件,用於提供有限個數的選項供使用者選擇。 它是通過代理和資料來源的方法對其進行設定和資料來源填充的,這種控制元件的設計模式也是代理模式的應用之一。 新增下面的程式碼即可實現基本功能。 class ViewController: UIViewControlle

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

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

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

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

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)在進行選擇排