更新時(shí)間:2022-11-03 11:03:01 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1769次
選擇排序技術(shù)是一種選擇數(shù)組中最小的元素并與數(shù)組的第一個(gè)元素交換的方法。接下來(lái),數(shù)組中第二小的元素與第二個(gè)元素交換,反之亦然。
這樣,數(shù)組中的最小元素會(huì)被重復(fù)選擇并放在適當(dāng)?shù)奈恢茫钡秸麄€(gè)數(shù)組被排序。
為選擇排序維護(hù)了兩個(gè)子數(shù)組:
排序子數(shù)組:在每次迭代中,找到最小元素并將其放置在適當(dāng)?shù)奈恢?。該子?shù)組已排序。
未排序的子數(shù)組:未排序的剩余元素。
選擇排序是一種簡(jiǎn)單明了的排序技術(shù)。該技術(shù)只涉及在每次傳遞中找到最小的元素并將其放置在正確的位置。選擇排序非常適合較小的數(shù)據(jù)集,因?yàn)樗梢杂行У貙?duì)較小的數(shù)據(jù)集進(jìn)行排序。
因此,我們可以說(shuō)選擇排序不適用于較大的數(shù)據(jù)列表。
選擇排序的一般算法如下:
選擇排序 (A, N)
第 1 步:對(duì) K = 1 到 N-1 重復(fù)第 2 步和第 3 步
第 2 步:最小調(diào)用例程(A,K,N,POS)
第 3 步:
用 A [POS] 交換 A[K]
[循環(huán)結(jié)束]
第 4 步:退出
例程最小(A、K、N、POS)
第 1 步:[初始化] 設(shè)置 minimumItem = A[K]
第 2 步:[初始化] 設(shè)置 POS = K
第 3 步:
對(duì)于 J = K+1 到 N -1,重復(fù)
if minimumItem > A [J]
set minimumItem = A [J]
set POS = J
[if end]
[End of loop]
第 4 步:返回 POS
如您所見,在遍歷數(shù)據(jù)集時(shí)調(diào)用了查找最小數(shù)字的例程。找到最小元素后,將其放置在所需位置。
現(xiàn)在讓我們演示實(shí)現(xiàn)選擇排序的 Java 程序。
import java.util.*;
class Main
{
static void sel_sort(int numArray[])
{
int n = numArray.length;
// traverse unsorted array
for (int i = 0; i < n-1; i++)
{
// Find the minimum element in unsorted array
int min_idx = i;
for (int j = i+1; j < n; j++)
if (numArray[j] < numArray[min_idx])
min_idx = j;
// swap minimum element with compared element
int temp = numArray[min_idx];
numArray[min_idx] = numArray[i];
numArray[i] = temp;
}
}
public static void main(String args[])
{
//declare and print the original array
int numArray[] = {7,5,2,20,42,15,23,34,10};
System.out.println("Original Array:" + Arrays.toString(numArray));
//call selection sort routine
sel_sort(numArray);
//print the sorted array
System.out.println("Sorted Array:" + Arrays.toString(numArray));
}
}
輸出:
原始數(shù)組:[7, 5, 2, 20, 42, 15, 23, 34, 10]
排序數(shù)組:[2, 5, 7, 10, 15, 20, 23, 34, 42]
在上面的java例子中,我們反復(fù)尋找數(shù)組中最小的元素,放入排序好的數(shù)組中,直到整個(gè)數(shù)組完全排序。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)