【问题标题】:C Programm.How can I sort the RANDOM List in C?C 程序。如何在 C 中对 RANDOM 列表进行排序?
【发布时间】:2021-07-30 14:05:56
【问题描述】:

我想用随机 5 个数字对列表进行排序。他们还给了我一个准备好的清单来检查它是否有效。随机列表必须对列表中最小的数字进行排序,并将其放在列表的第一个数组中,然后放在第二个和第三个......直到它被排序。 我不知道为什么它不起作用...请帮助。

#include <stdio.h>
#include <stdlib.h>

void generate_randomzahlen(int *a, int *n) {
    int i;
    for (i = 0; i < n; i++) {
        a[i] = rand() % 5;
        printf("%d\n", &a[i]);
    }
}

void setMINAdressIfMinIsGreater(int *min, int *arr) {
    if (*min > *arr) {
        *min = arr;
    }
}

void swap(int *a, int *b) {
    printf("Anfang A: %d, Anfang B: %d\n", *a, *b);
    int text_a = *a;
    *a = *b;
    *b = text_a;
    printf("A danach: %d, B danach: %d\n", *a, *b);

void selektionsSort(int arr[], int length) {
    int *cur;
    int *min;
    int i, j;
    for (i = 0; i < length; i++) {
        cur = &arr[i];
        min = &arr[i];
        for (j = i + 1; j < length; j++) {
            setMINAdressIfMinIsGreater(&min, &arr[j]);
        }
        swap(cur, min); //Array der kleiner ist wird dann am Anfang von meine Liste
    }
}

int main() {
    //Checking ob es richtig ist
    int array[] = { 5, 4, 3, 2, 1 };
    int liste = array;
    printf("Die erste Liste: %d\t", liste);

    printf("Sortierung von der Liste: \n");
    selektionsSort(array, 5);//(array[],length von Liste);

    int n, i;
    printf("\n Wie viele zufallige Zahlen soll dieser Array haben?: ");
    scanf("%d", &n);
    generate_randomzahlen(a, n);

    printf("\nZufallige Liste: ");
    for (i = 1; i < n; i++) {
        printf("d", a[i]);
    }

    selektionsSort(a[i], n);
    printf("Richtige Liste: ");
    for (i = 0; i < n; i++) {
        printf("%d\n", a[i]);
        printf("\n \n");
    }
    return 0;
}

【问题讨论】:

标签: c sorting bubble-sort


【解决方案1】:

你在函数声明中有错误:

void generate_randomzahlen (int * a, int * n) // declare n as a pointer
{
    int i;
    for (i=0; i<n; i++){ // use n as a value so result is undetermined
        a[i]=rand()%5;
        printf("%d\n",&a[i]);
    }
}

您应该将声明更改为:

void generate_randomzahlen (int * a, int n) // declare n as a int

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 2010-11-18
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    相关资源
    最近更新 更多