Theo mình thì thuật toán trên có thể viết như sau:
PHP Code:
int index,i,j;
for(i=0;i<array_size;i++)
for(j=i+1;j<array_size;j++)
if(number[i]<number[j])
{ index=number[i];number[i]=number[j];number[j]=index;}
Có thể giải thích thuật toán như sau:
Code:
VD luôn mảng 4 2 7...
Xét vòng lặp đầu tiên thì number[i]=number[0]=4,number[j=i+1]=number[1]=2,
ta thấy number[i]<number[j] nên đổi chỗ 2 phần tử này.
Dùng biến index giống biến trung gian (để nhận giá trị tạm thời )
để đổi chỗ number[i] và number[j].Ta có đoạn code
{ index=number[i];number[i]=number[j];number[j]=index;}
Sau lần đổi chỗ nầy thì number[0]nhận giá trị nhỏ nhất trong 2 phần tử đầu.
Tiếp tục thực hiện vòng lặp để so sánh number[0] (hiện tại )
với các phần tử khác (j=i+1) đến hết mảng.
Sau j<array_size lần thực hiện thì number[0] sẽ là phần tử bé nhất trong mảng.
Đến vòng lặp lớn tiếp theo thì xét đến number[1] và tìm ra
phần tử bé thứ 2 trong mảng.cứ như vậy cho đến hết.
Thuật toán này đơn giản nên mình hi vọng là bạn đã hiểu.