gpt4 book ai didi

c - 按升序排列数字

转载 作者:行者123 更新时间:2023-11-30 21:42:42 25 4
gpt4 key购买 nike

为什么我需要为i var声明这个for循环这么多次,这个j是什么意思?变量(for j=i+1;j<n;j++)

我怎么知道那个数字(i)>数字(j)。还有a = number[i]; number[i] 的值是多少这里?

#include <stdio.h>


/*
* C program to accept N numbers and arrange them in an ascending order
*/

void main() {

int i, j, a, n, number[30];

printf("Enter the value of N \n");
scanf("%d", &n);
printf("Enter the numbers \n");

for (i = 0; i < n; ++i) {

scanf("%d", &number[i]);

}

for (i = 0; i < n; ++i) {

for (j = i + 1; j < n; ++j) {

if (number[i] > number[j]) {

a = number[i];
number[i] = number[j];
number[j] = a;

}

}

}

printf("The numbers arranged in ascending order are given below \n");

for (i = 0; i < n; ++i){

printf("%d\n", number[i]);

}

}

最佳答案

这是一个非常基本的程序,称为选择排序。

维基文章是:Selection sort .

基本上在这个程序中,i 首先指向数组中的第一个元素。然后,j 指向下一个元素。如果元素j小于元素i,它们就会被交换。交换后,内部的 for 循环仍然继续,然后 j 指向它所指向的下一个元素,并再次检查它是否较小,然后交换如果这是真的。

我认为这有点令人困惑,所以我现在用一个例子来实现。

假设我们有一个包含 3 个元素的数组:4 1 3i 指向第一个元素 4。j 指向第二个元素 1。它检查元素 j 是否小于元素i。是的,所以它交换了它们。现在数组是:143。然后j移动到下一个元素。它检查元素j是否小于元素i。否。然后,内循环结束。现在,i 指向 4,j 指向 3。它检查元素 j 是否小于元素 i.是的,所以它交换了它们。所以现在数组是134。它会继续这个过程,直到 i 小于 3(即数组元素的数量)。因此,现在数组已按升序排序。

enter image description here

此图像取自前面提到的链接。红色是当前最小值。黄色是排序列表。蓝色是当前项目。

嗯,线路

a = number [i];

只是将数组number的元素i的值复制到变量a

线路

number [i] = number [j];

只是将数字数组的元素j的值复制到其元素i中。

线路

number [j] = a;

正在将a的值复制到数组number的元素j中。

基本上,这些行

a = number [i];
number[i] = number [j];
number [j] = a;

正在交换number [i]number [j]的值。

关于c - 按升序排列数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35377817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com