-
选择是正确的。
for(i=1;i<=n;i++)
printf("%d",a[i]);
你的 a[n] 越位,a[0] 没有输出!!
已更改为。 for(i=0;iprintf("%d",a[i]);
给积分!! 谢谢!!!
-
你的错误主要是你希望 a[0] 忽略,而 a[n] 不存在,因为数组 a[n] 从 a[0], 0 到 n-1 开始
-
选择排序是一种用于对数据进行排序的简单算法,易于缓慢实现以整数数组元素为例,有数组a[10],即a[0],a[1]...。A[8],A[9](假设轿子的元素彼此不同),要求元素按递增顺序排序。
从一个方向开始扫描,以元素为参考,例如从左到右,以 a[0] 为参考,然后从 a[0] 开始。a[9] 找到最小的元素并将其与 a[0] 相交。
c语言的选择和排序的详细说明
工作原理是一次从无序组的数据元素中选择最小(或最大)的元素,存放在无序组的起始位置,减少无序组元素的数量,增加排序的组元素数量,直到所有待排序的数据元素都用完为止。
以升序为例
**:
#include
void selectionsort(int *num,int n)
int i = 0;
int min = 0;
int j = 0;
int tmp = 0;
for(i = 0;i < n-1;i++)
min = i;每次谈论 min 时,设置无序组的起始位置元素的下标。
for(j = i;j < n;j++) 遍历无序组以查找最小的元素。
if(num[min]>num[j])
min = j;
if(min !=一)如果最小元素不是无序组起始位置元素,则与起始元素交换位置。
tmp = num[min];
num[min] =num[i];
num[i] =tmp;
这里有一个空行)。
int main()
int num[6] =
int i = 0;
selectionsort(num,6);这里需要传入序列中的元素个数,有心的人可以使用sizeof来求函数中的元素个数。
for(i = 0;i < 6;i++)
printf("%d ",num[i]);
return 0;
-
1,12,30,11,5
假设按降序排序,则第一次行程应完成:30,12,1,11,5第二次行程应完成 应为:30,12,1,11,5第三次行程应完成 应为:30,12,11,1,5如果按升序排序,则应完成第一次行程 应为:1,12,30,11,5第二次行程应完成 应为: 1,5,30,11,12第三次行程应完成 应为:1,5,11,30,12
-
品牌型号:RedmiBook Pro 15 系统:Windows 10
选择排序方法是一种不稳定的排序算法。 它的工作原理是从数据元素中选择最小(或最大)元素进行排序,将其存储在序列的开头,然后继续从剩余的未排序元素中查找最小(最大)元素,然后将其放置在排序序列的末尾。 依此类推,直到所有要排序的数据元素都用尽。
选择排序方法的循环第一层从起始元素开始到倒数第二个元素,主要是在循环的第二层每次进入之前,将外循环的下标分配给临时变量,而在循环的下一层中,如果扰动的马铃薯果实发现最小位置有比元素小的元素, 较小元素的下标被赋值给关键李谭临时变量,最后,在第二层循环退出后,如果临时变量发生变化,则说明有一个元素小于外循环的当前位置,这两个元素需要互换。
楼主,你应该说,你的方案在实施的时候,“第一个数字大于第二个数字按升序排列时必须满足第一个数字,排序排列时第一个数字必须小,第二个数字必须满足,否则会有错误”,不要说人们在冒泡排序时会有这样的漏洞。 气泡排序的思路:比较两个相邻的,并根据排序要求将它们移置(升序和降序颠倒)。 >>>More