gpt4 book ai didi

c - 不使用 qsort 对 2x3 矩阵进行排序

转载 作者:行者123 更新时间:2023-11-30 15:34:38 24 4
gpt4 key购买 nike

我的老师布置了一些我似乎不知道如何在不使用qsort的情况下完成的任务。我们给了一个 2x3 数组,他希望我们将每一行从最小到最大排序。我不允许将 qsort 用于学习目的;在我看来,这很难。

这是我到目前为止所拥有的;目前,程序崩溃了。我认为这是因为当它到达第三列时,第四列[j+1]中没有任何内容,因此它返回错误。

#include "stdafx.h"
#include <stdio.h>

int main() {

int x[2][3] = { { 2, 3, -1 }, { 0, -3, 5 } }; //2x3 matrix; 2 rows, 3 columns
void sortMinMax(int b[][3], int numRow, int numColumn); //function prototype

sortMinMax(x, 2, 3);

return 0;
}

void sortMinMax(int a[][3], int numRow, int numColumn) {

for (int i = 0; i < numRow; i++) {
for (int j = 0; j < numColumn - 1; j++) {
if (a[i][j + 1] < a[i][j]) { //swap values if the next number is less than the current number
int temp = a[i][j];
a[i][j] = a[i][j + 1];
a[i][j + 1] = temp;
}
printf("%i\t", a[i][j]);
}
printf("\n");
}

return;
}

我感谢所有帮助!

最佳答案

  1. 我相信int i = 0; i <= numRow; i++应该是int i = 0; i <
    numRow; i++
  2. 为什么你有if(i==0) & if(i==1)如果你也在做同样的事情?
  3. 看起来您试图实现类似冒泡排序的算法,但只对数据进行了一次传递

这是冒泡排序算法的示例

for(int x=0; x<n; x++)
{
for(int y=0; y<n-1; y++)
{
if(array[y]>array[y+1])
{
int temp = array[y+1];
array[y+1] = array[y];
array[y] = temp;
}
}
}

可能会找到更好的替代方案@ http://www.sorting-algorithms.com/bubble-sort

for i = 1:n,
swapped = false
for j = n:i+1,
if a[j] < a[j-1],
swap a[j,j-1]
swapped = true
→ invariant: a[1..i] in final position
break if not swapped
end

关于c - 不使用 qsort 对 2x3 矩阵进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23205237/

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