for(k=0;k<n-1;k++){
index=k;
for(i=k+1;i<n;i++){
if(a[i]>a[index])
{
index=i;
}
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
可以讲一讲第二个循环中i=k+1;i<n;i++是什么意思?
for(k=0;k<n-1;k++){
index=k;
for(i=k+1;i<n;i++){
if(a[i]>a[index])
{
index=i;
}
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
可以讲一讲第二个循环中i=k+1;i<n;i++是什么意思?
内循环去选取当前元素的后面元素来跟当前元素进行判断。
首先以第1个位置的数字,依次与2、3、4……n个位置的数字作比较。
如果第1个位置的数字大于或等于某一个位置的数字,则两个位置的数字不变,反之则将两个位置的数字进行互换。
当第一轮比较大小完成后,此时第1个位置的数字即为此排序数列的最大值。
接下来选择第2个位置的数字,以同样的方法依次与3、4、5……n个位置的数字作比较,将最大值放在第2个位置。
依循此方法直到第n-1位置的数字和第n位置的数字比较大小之后,整个数列就由大到小来排列。
简而言之,其主要思想是在要排序的一组数列中,选出最大的一个数与第1个位置的数交换;
然后在剩下的数当中再找最大的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。
数列如需要由小到大排序,原理相同。