Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 这个分类正确吗?还是它遗漏了什么_Algorithm_Sorting - Fatal编程技术网

Algorithm 这个分类正确吗?还是它遗漏了什么

Algorithm 这个分类正确吗?还是它遗漏了什么,algorithm,sorting,Algorithm,Sorting,经过几次尝试后,这个算法似乎有效,但我不确定它是否正确。有人能帮忙吗? n是数组的大小 从第一个案例到案例编号(n-1) j从i+1到n #包括 #包括 void main(){ int t[50]; int i; int j; int n; int aux; scanf(“%d”和“&n”); 对于伪代码中的(i=1;i类似,您的算法如下: Sort(A, N): for (i = 1 to N-1): for (j = i+1 to N): if (A[i] >

经过几次尝试后,这个算法似乎有效,但我不确定它是否正确。有人能帮忙吗?

n是数组的大小

从第一个案例到案例编号(n-1)

j从i+1到n

#包括
#包括
void main(){
int t[50];
int i;
int j;
int n;
int aux;
scanf(“%d”和“&n”);

对于伪代码中的(i=1;i类似,您的算法如下:

Sort(A, N):
  for (i = 1 to N-1):
    for (j = i+1 to N):
      if (A[i] > A[j]):
        swap(A, i, j)
其中A是数字数组,N是数组大小

我已经有一段时间没有尝试证明任何东西的正确性了,但似乎如果外循环能够保证在每次迭代结束时,最小的数字将在
a[I]
,那么它将是正确的。因此问题是内循环是否将最小的元素放入
a[I]

由于每次
A[i]
大于
A[j]
时,它都将
A[i]
A[j]
交换,因此我们可以保证
A[k-1]
在内环的任何
k
第次迭代中总是大于
A[i]
,因此
A[i]
将是子阵列
A[i:N]的最小元素
在内部循环完成执行时(当
k=N+1
时)。因此,此算法是正确的


我不太熟悉C编程,所以我无法告诉您的代码是否完全符合此要求,但如果符合此要求,则您的代码示例也是正确的。

与伪代码类似,您的算法如下所示:

Sort(A, N):
  for (i = 1 to N-1):
    for (j = i+1 to N):
      if (A[i] > A[j]):
        swap(A, i, j)
其中A是数字数组,N是数组大小

我已经有一段时间没有尝试证明任何东西的正确性了,但似乎如果外循环能够保证在每次迭代结束时,最小的数字将在
a[I]
,那么它将是正确的。因此问题是内循环是否将最小的元素放入
a[I]

由于每次
A[i]
大于
A[j]
时,它都将
A[i]
A[j]
交换,因此我们可以保证
A[k-1]
在内环的任何
k
第次迭代中总是大于
A[i]
,因此
A[i]
将是子阵列
A[i:N]的最小元素
在内部循环完成执行时(当
k=N+1
时)。因此,此算法是正确的


我不太熟悉C编程,所以我不能告诉你你的代码是否完全遵循了这一点,但如果确实如此,那么你的代码示例也是正确的。

也许你可以缩进它,这会有很大帮助Hello:D我很抱歉,你是什么意思lol?请在你学习的地方查找缩进的含义,并一致地应用它。另外,请D不要使用诸如“lol”之类的聊天术语也许你可以缩进它,这会有很多帮助你好:D我很抱歉,你说的lol是什么意思?请在你学习的地方查找缩进的含义,并始终如一地应用它。另外,请不要使用诸如“lol”之类的聊天术语