Selection Sort,selectionsort
Jun 13, 2016 am 09:21 AMSelection Sort,selectionsort
Red is current min. Yellow is sorted list. Blue is current item.?(picture from wikipedia, a little too fast)
?
10 numbers. Sort as ascend.
?
1. Find the min of the 10 and switch it with a[0], requires 9 times of compare
2. Find the min of the rest 9 and switch it with a[1], requires 8 times of compare
. . .
?
1, 10, 9
2, 9, 8
3, 8, 7
4, 7, 6
5, 6, 5
6, 5, 4
7, 4, 3
8, 3, 2
9, 2, 1
?
In conclusion: For 10 numbers, we need 9 times of finding the min, each has one-short amount of numbers to compare.
?
Implementation in PHP:
<span> 1</span> <?<span>php </span><span> 2</span> <span>/*</span><span> selection sort: </span><span> 3</span> <span> 1. operate directly on the input array (&), not on a copy </span><span> 4</span> <span> 2. sort as ascend </span><span> 5</span> <span> 6</span> <span> a is array </span><span> 7</span> <span> m is length of a </span><span> 8</span> <span> n is times of outer loop, which is finding min of the rest </span><span> 9</span> <span> i/j is for-loop counter </span><span>10</span> <span> w is for value swap </span><span>11</span> <span> min is min </span><span>12</span> <span> sub is index of array </span><span>13</span> <span>*/</span> <span>14</span> <span>function</span> sortSelection(&<span>$a</span><span>){ </span><span>15</span> <span>$m</span> = <span>count</span>(<span>$a</span>); <span>16</span> <span>$n</span> = <span>$m</span> - 1; <span>17</span> <span>$min</span><span>; </span><span>18</span> <span>$sub</span>; <span>19</span> <span>for</span>(<span>$i</span>=0; <span>$i</span><<span>$n</span>; <span>$i</span>++<span>){ </span><span>20</span> <span>$min</span> = <span>$a</span>[<span>$i</span>]; <span>21</span> <span>for</span>(<span>$j</span>=<span>$i</span>; <span>$j</span><<span>$m</span>; <span>$j</span>++){ <span>22</span> <span>if</span>(<span>$a</span>[<span>$j</span>] < <span>$min</span><span>){ </span><span>23</span> <span>$min</span> = <span>$a</span>[<span>$j</span><span>]; </span><span>24</span> <span>$sub</span> = <span>$j</span><span>; </span><span>25</span> <span> } </span><span>26</span> <span>else</span><span>{ </span><span>27</span> <span>$sub</span> = <span>$i</span><span>; </span><span>28</span> <span> } </span><span>29</span> <span> } </span><span>30</span> <span>$a</span>[<span>$sub</span>] = <span>$a</span>[<span>$i</span><span>]; </span><span>31</span> <span>$a</span>[<span>$i</span>] = <span>$min</span><span>; </span><span>32</span> <span>//</span><span> echo implode(', ', $a).'<br />';</span> <span>33</span> <span> } </span><span>34</span> <span>} </span><span>35</span> <span>36</span> <span>$arr</span> = <span>array</span>(9, 5, 2, 7, 3<span>); </span><span>37</span> sortSelection(<span>$arr</span><span>); </span><span>38</span> <span>echo</span> <span>implode</span>(', ', <span>$arr</span><span>); </span><span>39</span> <span>40</span> <span>//</span><span> 2, 3, 5, 7, 9</span> <span>41</span> ?>
?
void selection_sort(int array[],int k)
{
int i,j,m,t;
for(i=0;i
for(j=i+1;jif(array[j]
if(m!=i){
t=array[i];
array[i]=array[m];
array[m]=t;
}
}
}
void main(){
int a[10];
for (int i=0;iscanf("%d",&a[i]);
selection_sort(a,10);
printf("排序結(jié)果為:");
for (i=0;iprintf("%d\n",a[i]);
}
?
void selection_sort(int array[],int k)
{
int i,j,m,t;
for(i=0;i
for(j=i+1;jif(array[j]
if(m!=i){
t=array[i];
array[i]=array[m];
array[m]=t;
}
}
}
void main(){
int a[10];
for (int i=0;iscanf("%d",&a[i]);
selection_sort(a,10);
printf("排序結(jié)果為:");
for (i=0;iprintf("%d\n",a[i]);
}
?

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

C++sort函數(shù)底層採用歸併排序,其複雜度為O(nlogn),並提供不同的排序演算法選擇,包括快速排序、堆排序和穩(wěn)定排序。

Uniapp是一款跨平臺的開發(fā)框架,其強大的跨端能力使得開發(fā)者可以快速方便地開發(fā)出各種應用。在Uniapp中實現(xiàn)拖曳排序和拖曳操作也是非常簡單的,並且可以支援多種組件和元素的拖曳操作。本文將介紹如何使用Uniapp實作拖曳排序和拖曳操作,並提供具體的程式碼範例。拖曳排序功能在許多應用中都非常常見,例如可以用於實現(xiàn)清單的拖曳排序,圖示的拖曳排序等。下面我們以列表

標題:C#中使用Array.Sort函數(shù)對陣列進行排序的範例正文:在C#中,陣列是一種常用的資料結(jié)構(gòu),經(jīng)常需要對陣列進行排序運算。 C#提供了Array類,其中有Sort方法可以方便地對陣列進行排序。本文將示範如何使用C#中的Array.Sort函數(shù)對陣列進行排序,並提供具體的程式碼範例。首先,我們要先了解Array.Sort函數(shù)的基本用法。 Array.So

範例在這個範例中,我們先來看看list.sort()的用法,然後再繼續(xù)。在這裡,我們建立了一個清單並使用sort()方法按升序排序-#CreatingaListmyList=["Jacob","Harry","Mark","Anthony"]#DisplayingtheListprint("List=",myList)#SorttheListsinAscendingOrdermyList .sort(

如何使用C#中的List.Sort函數(shù)對列表進行排序在C#程式語言中,我們經(jīng)常需要對列表進行排序操作。而List類別的Sort函數(shù)正是為此設(shè)計的強大工具。本文將介紹如何使用C#中的List.Sort函數(shù)對清單進行排序,並提供具體的程式碼範例,幫助讀者更好地理解並應用該函數(shù)。 List.Sort函數(shù)是List類別的一個成員函數(shù),用來對清單中的元素進行排序。該函數(shù)接

使用PHP函數(shù)"sort"將陣列依升序排序在PHP中,可以很方便地使用內(nèi)建函數(shù)來對陣列進行排序。其中,sort函數(shù)是最常用的函數(shù)之一,可以將陣列依照升序進行排序。本文將介紹如何使用sort函數(shù),並給出對應的程式碼範例。 sort函數(shù)的語法如下:sort(array&$array,int$sort_flags=SORT_REGULAR):boo

PHP8.1新增的數(shù)位排序函數(shù)PHP是一種廣泛使用的開源腳本語言,常用於Web開發(fā)。它不僅功能強大,還擁有豐富的內(nèi)建函數(shù)庫。在最近發(fā)布的PHP8.1版本中,又新增了一些有趣的特性和函數(shù),其中包含了數(shù)字排序函數(shù)。這些新函數(shù)可以使開發(fā)者更方便地對數(shù)字數(shù)組進行排序操作,提高開發(fā)效率和程式碼可讀性。在過去的PHP版本中,我們通常會使用sort()或rsort()函數(shù)對數(shù)

sort排序函數(shù)的用法:1、對列表進行排序,預設(shè)情況下,sort函數(shù)按升序排序,因此最終輸出的結(jié)果是按從小到大的順序排列的;2、對元組進行排序,預設(shè)情況下, sort函數(shù)按元素的大小進行排序,因此最終輸出的結(jié)果是按從小到大的順序排列的;3、對字典進行排序,由於字典是無序的,因此排序後的結(jié)果仍然是原來的字典,使用一個lambda表達式作為key參數(shù)的值,用來指定排序的依據(jù)。
