Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/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
C 不同列长的冒泡排序矩阵_C_Pointers_Matrix_Bubble Sort - Fatal编程技术网

C 不同列长的冒泡排序矩阵

C 不同列长的冒泡排序矩阵,c,pointers,matrix,bubble-sort,C,Pointers,Matrix,Bubble Sort,我需要对不同列长度的矩阵进行气泡排序, 它必须不带[]操作数,并且使用C语言。 我试着这样做: for (i = 0; i < 5; i++) { first = (arr + i+d);// the first value in every line for (j = 1; j <= (*first); j++) { for (d = 0; d <*(first)- j - 1; d++) { i

我需要对不同列长度的矩阵进行气泡排序, 它必须不带[]操作数,并且使用C语言。 我试着这样做:

for (i = 0; i < 5; i++)
{
    first = (arr + i+d);// the first value in every line
    for (j = 1; j <= (*first); j++)
    {
        for (d = 0; d <*(first)- j - 1; d++)
        {
            if (*(first+d+i) > *(first+d+1+i) )
            {
                swap =*(first+d);
                *(first+d) = *(first+d+1);
                *(first+d+1) = swap;
            }
        }
    }
}
(i=0;i<5;i++)的

{
first=(arr+i+d);//每行中的第一个值
对于(j=1;j
#包括
#包括
typedef int类型;
#定义PRN_类型“%d”
无效打印(类型**a,整数大小){

对于(int i=0;i)当您说“它没有工作”时,您的确切意思是什么?行的第一个元素表示行中的列数?下一个问题:它在哪一行“崩溃”?1.是的。我需要提到的是,行的第一个元素表示行中的列数,排序在它之后开始。2.在*行中(first+d+i)=swap;
#include <stdio.h>
#include <stdlib.h>

typedef int Type;

#define PRN_Type "%d"

void print(Type **a, int size){
    for(int i = 0;i<size;++i){
        for(int j=1;j<=a[i][0];++j){
            printf(PRN_Type " ", a[i][j]);
        }
        printf("\n");
    }
}

void b_sort(Type **arr, int size){
    int i, j, d;
    Type swap, *first;
    for (i = 0; i < size; ++i){
        first = arr[i];//!!
        for (j = 1; j <= *first; ++j){
            for (d = 2; d <= *first -j+1; ++d){
                if (*(first+d-1) > *(first+d) ){
                    swap =*(first+d-1);
                    *(first+d-1) = *(first+d);
                    *(first+d) = swap;
                }
            }
        }
    }
}

int main(void){
/*
    int data[5][] = {
        {3, 2,4,1},
        {2, 99, 55},
        {5, 9,5,1,7,5},
        {1, 100},
        {4, 5,5,5,5}
    }
*/
    int size = 5;
    Type **data;
    data = malloc(size * sizeof(Type*));
    data[0]=(Type[]){3, 2,4,1};
    data[1]=(Type[]){2, 99, 55};
    data[2]=(Type[]){5, 9,5,1,7,5};
    data[3]=(Type[]){1, 100};
    data[4]=(Type[]){4, 5,5,5,5};
    print(data, size);
    b_sort(data, size);
    printf("\n");
    print(data, size);
    return 0;
}