-
不知道是不是问题,这个**格式挺乱的,看起来有点累。
我觉得你的程序有两个问题:
1.读取文件后,在将文件内容分配给数组 a 时,为什么每读取 5 个数字就将 i 设置为 0? 这不总是将内容分配给数组 a 的前 5 个元素吗?
2.你的冒泡方法。 事实上,没有冒泡的成功。
我不知道我是不是错了,但你可以看看我修改后的程序(我没有正确使用变量,凑合着用它)。
#include
#include
#include
#define size 10
int i;
int size = 0;
void internalsorting(int a)
int main()
int a[size];
int j;
file *p;
if((p = fopen("","r")) == null)
printf("file could not be opened");
elsewhile(!feof(p))
fscanf(p,"%d",&a[i]);
i++;读一个,我加 1,有多少,我就有多少。
if(i==5)
printf("");
fclose(p);
size = i;
internalsorting(a);
for(j = 0; j < size; j++)
printf("%d ", a[j]);
if((j + 1) %5 == 0) 每 5 个输出换行一次。
printf("");
return 0;
void internalsorting(int a)
int pass;
int j;
int temp;
鼓泡法,详细讲解可以在书中阅读,或者哈。
for(pass=0; pass < size - 1; pass++)
for(j=pass + 1; j < size; j++)
if(a[pass] >a[j])
temp=a[pass];
a[pass]=a[j];
a[j]=temp;
-
#include
main()
printf("%-4d",a[i]);
printf("%4d",a[i]);
插入一个值。 printf("请输入要插入的值:");
scanf("%d",&num);
for(i=0;i<10;i++)
if(num<=a[i])
a[i] = num;
for(i=0;i<11;i++)
printf("%-4d",a[i]);
printf("");}
-
2.这里运用了快速排序的思想,通过一次排序将待排序的数据分成两个独立的部分,即这里将数据分成i和j两个变量,然后将一部分中的所有数据都小于另一部分中的所有数据,然后将数据的两部分分别进行比较和排序, 并且整个排序过程可以递归进行,从而实现整个数据变成一个有序序列:
3.然后编写 main 函数,在 main 函数中定义一个数组,然后使用 scanf 接受数组,用户输入 10 个数字后,该数字会存储在数组中,然后调用上面的函数进行排序,函数的输入就是刚刚输入的数字,最后可以输出排序的结果:
4.最后编译运行,输入10个数字,最后控制台输出排序结果,证明程序的逻辑没有问题。 以上是 C 语言中 10 个数字排序的演示
-
以两种方法为例,分别是冒泡法和选择法。
1]鼓泡法。
气泡法的基本思想:每次比较两个相邻的数字,并将较小的一个调整到前面。
如果有 n 个数字,则执行 n-1 行程比较。 在第一次行程中,执行 n-1 成对比较,在 j 腿比较中,执行 n-j 成对比较。
#include
#pragma warning(disable:4996)
int main()
printf("the sorted numbers:");
for (i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("");
system("pause");
return 0;
2] 选择方法。
选择方法的基本思想是将前面的数字与后面的每个数字依次进行比较,每次都挑出最小的一个放在前面。
如果有 n 个数字,则用于 n-1 轮比较,a[1] a[n] 已经按从小到大的顺序存储。
#include
#pragma warning(disable:4996)
int main()
printf("the sorted numbers:");
for (i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("");
system("pause");
return 0;}
-
您可以编写一个简单的链表。
在这方面,线性物理结构相对容易处理。
-
排序方法太多了,所以让我们使用最简单的冒泡方法,包括
int main()
bubble(arr,10);
return 0;}
-
这就是气泡分选方法。
第一个周期的控制变量应为 i < n - 1 ,即第一个对数只到倒数第二个;
第二个循环的控制变量应该是 j < n,这意味着成对比较的最后一个数字,直到最后一个数字。
如果有帮助,请点击领养,谢谢!
-
其原理是利用冒泡算法将最大的数字浮在上面,小的数字下沉,最后输出。
这是如何做到的: 分析:我们尝试将最小的数字放在 x 上,首先将 x 与 y 进行比较,如果 x > y,则将 x 与 y 交换,然后将 x 与 z 交换,如果 x > z,则将 x 与 z 交换,使 x 最小。
1.从控制台读取三个数字;
2.实现从小到大排序的三个数字:
1)以第一个数字为最小数字,依次与第二个和第三个数字进行比较。如果其中一个小于第一个,则交换两个数字。
2)在步骤(1)之后,获取第一个数字作为最小值。将第二个数字的大小与第三个数字的大小进行比较后,可以将三个数字从小到大排序。
扩展材料。 两种常见的排序方法:
1.选择排序方法:从一列数字中选择第一个数字作为最小数字,依次与以下数字进行比较。 如果有一个小于第一个数字的数字,则交换两个数字。 最后,当列数为倒数第二时,列数按从小到大的顺序排列。
2.冒泡排序方法:思路与选择排序方法一致。 不同之处在于,冒泡排序将第一个作为最大数字,然后将其与该数字之后的数字进行比较。
-
分拣方法有很多种,因为只有3种,所以效率差不多,只是简单的气泡分拣。
A、B 和 C 就是这三个数字。
inti,a,b,c,temp;
for(i=0;i<3;i++)
if(b>c)
-
鼓泡方式:包括
main()
printf("从小到大的顺序是:")
for(i=0;i<3;i++) 得到最终结果。
printf("%d",a[i]);
-
我给你一个算法。 先按等级排序,如果过程中有相等的,记住它的索引(数组下标),完成后再按等级对相等的部分进行排序,同样,如果这个过程有相等,还是记下它的索引,完成后再按名称对相等的部分进行排序。
-
(使用分段冒泡方法进行排序)。
1.对于结构数组,根据结果采用气泡法对整体进行排序;
2、循环核对分数相等的条目,找到相等的序号开始和结束的序号;
3、在相等等级的间隔内,继续按等级大小采用鼓泡分选;
4.重复2,3,直到遍历数据;
5、循环检查牌号大小相等的条目,找到序号开头和结尾相等的序号;
6、在等级区间内,采用冒泡法按名称字典排序规则排序;
7. 重复上述步骤,直到遍历数据。
-
1. 所有第一个 for 循环都是从 a[0] 开始遍历 A 数组,第二个 for 循环是从 a[1] 遍历。
t=i m=a[i],即获取外循环遍历的值 m 和下标 i。
第 1 个和第 2 个孔是 if 语句,如果其中有 m=a[j] 的语句,那么执行这个语句和第二个空语句必须满足什么条件? 第二个 for 循环从 a[1] 到 a[9],然后您需要从九个值中选择一个,第二个 if(t!) 在下面=一)显然,m 被用作中间值,交换了 1 个变量,交换的值是 a[i] a[t],所以第三个空白用 a[i]=a[t] 填充,这里是第一个 for 循环末尾的最后一条语句。
把 a[i] 和 a[t] 的值交换一下,在 t=i 定义开头,如果在 if 语句中什么都不做,显然这样做是完全没有意义的,所以语句 2 必须对 t 做 1 次赋值,下面的 if 语句可以很好地判断 t 和 i 之间的关系, 所以语句 2 填入 t=j,如果 if 语句的含义是 m=a[j],可以发现 t=j 与 t=i m=a[i] 的开头非常相似,要得到这个值及其下标,这样做的条件是什么?根据下面的if语句,我们可以知道与a[0]比较的目的是得到a[1]-a[9]中的最小值,然后与a[0]进行比较,所以如果a[j],那么3个空格是:
a[i];;
-
(1)m > a[j]
2)t = j
3)a[i] = a[t]
循环的第二层主要是找一个小于 a[i] 的数字,if 语句是替换小于 a[i] 的某个位置的数字来排序。
<> 要学好C语言,需要掌握以下几个方面:
1.清楚地掌握 C 语言的基础知识。 例如变量、数据类型、运算符、控制语句等。 这些是C语言的基础,如果你掌握了姿势,就需要更好地理解和编写程序。 >>>More
首先,不建议现在学习C++,掌握C后学习C++会容易得多。 这次推荐你现在就读《C Primer Plus》,谭浩强的书比较笼统,这本书也比较详细! 读完之后,看看关于数据结构或计算机组合原理的书籍,以及关于算法的书籍! >>>More
我认为你设置了一个数组 temp[20] 来将 i 读入 temp[20],然后在每次满时输出它,这样你就可以实现你的目标。
如下图所示:
C 是一种通用的计算机编程语言,具有广泛的应用。 C 旨在提供一种编程语言,该语言可以以简单的方式进行编译,处理低级内存,生成少量机器代码,并且在没有任何运行时支持的情况下运行。 >>>More