题目
以下程序的功能是用选择法对数组 a 中的整数由小到大进行排序。void sort(int b[],int n)( int i,j,t ;for(i = 0 ; ifor(______ ; jif(b[i]_____b[j]){t = b[i] ; _____________; b[j]=t ; )}main()( int a[]={5 , 8, 6, 2, 7, 4, 1, 3) ; int i;sort(a, 8);for(i = 0 ; i<8; i ++ )printf( ﹪″5d″,a[i]) ;printf( n″;)}
以下程序的功能是用选择法对数组 a 中的整数由小到大进行排序。void sort(int b[],int n){ int i,j,t ;for(i = 0 ; ifor(______ ; jif(b[i]_____b[j]){t = b[i] ; _____________; b[j]=t ; }}main(){ int a[]={5 , 8, 6, 2, 7, 4, 1, 3} ; int i;sort(a, 8);for(i = 0 ; i<8; i ++ )printf( ﹪″5d″,a[i]) ;printf( \ n″;)}
题目解答
答案
(1) j = i + 1(2) >(3) b [i] = b [j]
解析
步骤 1:理解选择排序算法
选择排序算法的基本思想是:每次从未排序的部分中选择最小(或最大)的元素,放到已排序部分的末尾。因此,需要两个循环,外层循环控制已排序部分的长度,内层循环用于在未排序部分中寻找最小(或最大)的元素。
步骤 2:确定内层循环的起始条件
内层循环的起始条件应该是从外层循环的当前元素的下一个元素开始,即 `j = i + 1`。这样可以确保每次内层循环都从当前已排序部分的末尾开始,寻找未排序部分的最小元素。
步骤 3:确定比较条件
在内层循环中,需要比较当前已排序部分的末尾元素和未排序部分的元素,如果未排序部分的元素更小,则交换它们的位置。因此,比较条件应该是 `b[i] > b[j]`。
步骤 4:确定交换操作
当找到未排序部分的最小元素时,需要将其与已排序部分的末尾元素交换位置。因此,交换操作应该是 `b[i] = b[j]`。
选择排序算法的基本思想是:每次从未排序的部分中选择最小(或最大)的元素,放到已排序部分的末尾。因此,需要两个循环,外层循环控制已排序部分的长度,内层循环用于在未排序部分中寻找最小(或最大)的元素。
步骤 2:确定内层循环的起始条件
内层循环的起始条件应该是从外层循环的当前元素的下一个元素开始,即 `j = i + 1`。这样可以确保每次内层循环都从当前已排序部分的末尾开始,寻找未排序部分的最小元素。
步骤 3:确定比较条件
在内层循环中,需要比较当前已排序部分的末尾元素和未排序部分的元素,如果未排序部分的元素更小,则交换它们的位置。因此,比较条件应该是 `b[i] > b[j]`。
步骤 4:确定交换操作
当找到未排序部分的最小元素时,需要将其与已排序部分的末尾元素交换位置。因此,交换操作应该是 `b[i] = b[j]`。