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