簡單選擇排序2
在上一節(jié)中,我們介紹了簡單選擇排序的基本原理和實(shí)現(xiàn)方法。通過比較數(shù)組中的元素,我們找到了最大的數(shù)并將其放在數(shù)組的第一個位置。然而,直接將最大數(shù)放在第一個位置會導(dǎo)致原來該位置的數(shù)據(jù)丟失。 為了解決這個
在上一節(jié)中,我們介紹了簡單選擇排序的基本原理和實(shí)現(xiàn)方法。通過比較數(shù)組中的元素,我們找到了最大的數(shù)并將其放在數(shù)組的第一個位置。然而,直接將最大數(shù)放在第一個位置會導(dǎo)致原來該位置的數(shù)據(jù)丟失。
為了解決這個問題,我們需要使用一個臨時變量來存儲數(shù)據(jù)。類似于互換兩瓶飲料的液體,我們可以定義一個變量t來暫存數(shù)據(jù)。具體步驟如下:
- 將a[0]的值賦給t:t a[0];
- 將a[3]的值賦給a[0]:a[0] a[3];
- 將t的值賦給a[3]:a[3] t;
這樣,我們就成功地將最大數(shù)放在了數(shù)組的第一個位置,同時沒有丟失其他數(shù)據(jù)。
通過觀察上述步驟,我們發(fā)現(xiàn)每次操作的目標(biāo)下標(biāo)no和循環(huán)的次數(shù)j是有規(guī)律的。因此,我們可以使用循環(huán)來重復(fù)執(zhí)行這段代碼。具體代碼如下:
include "stdio.h"
int main()
{
int a[10] {34, 56, 7, 89, 9, 9, 56, 34, 78, 65};
int no;
int t;
int i;
int j;
for(j 0; j < 9; j ) // 控制循環(huán)9次
{
// 重復(fù)執(zhí)行的代碼段
no j;
for(i j 1; i < 10; i )
{
if(a[i] > a[no])
{
no i;
}
}
t a[j];
a[j] a[no];
a[no] t;
//-----------------
}
// 輸出數(shù)組里的元素
for(i 0; i < 10; i )
{
printf("%d ", a[i]);
}
printf("
");
}
運(yùn)行結(jié)果如下:
89 78 65 56 56 34 34 9 9 7
至此,我們已經(jīng)完成了對10個元素的簡單選擇排序。使用循環(huán)的方法能夠簡化代碼,并且適用于不同數(shù)量的元素進(jìn)行排序。