【C语言】随机数文件对其进行三种排序方法

大致内容:生成一个随机数文件,并对其加载至堆区,对其进行冒泡,插入,选择排序,快速排序请到我的博客中查找。
三种排序思想不再赘述,实现起来也非常简单,在此直接上代码!

编译环境:Ubuntu18.04		GCC && CLion


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define max 200


//随机数文件创建,含max个值
void creatValue() {
    FILE *file = fopen("./value.txt", "w");
    if (!file)
        return;

    //随机数种子导入
    srand((unsigned) time(NULL));
    int arr[max] = {0};

    //写入文件
    for (int i = 0; i < max; ++i) {
        arr[i] = rand() % 300;
        fprintf(file, "%d\n", arr[i]);
    }

    printf("创建成功\n");
    fclose(file);
}


//交换函数
void swapValue(int *value1, int *value2) {
    int temp = *value1;
    *value1 = *value2;
    *value2 = temp;
}


//将随机数文件导入到堆区中
int *importValue() {
    FILE *file = fopen("./value.txt", "r");
    if (!file)
        return NULL;

    //开辟对应大小堆空间
    int *arr = (int *) malloc(sizeof(int) * max);

    //导入堆中
    for (int i = 0; i < max; ++i) {
        fscanf(file, "%d\n", &arr[i]);
    }

    return arr;
}


//打印函数,一行十个
void printValue(int *arr) {
    for (int i = 0; i < max; ++i) {
        printf("%d\t", *(arr + i));
        if (!((i + 1) % 10))
            printf("\n");
    }
    printf("\n");
}


//冒泡排序
void bubbleSort(int *arr) {
    for (int i = 0; i < max - 1; ++i) {
        for (int j = 0; j < max - 1 - i; ++j) {
            if (arr[j] > arr[j + 1]) {
                swapValue(&arr[j], &arr[j + 1]);
            }
        }
    }
}


//选择排序
void selectionSort(int *arr) {
    for (int i = 0; i < max - 1; ++i) {
        int temp = i;
        for (int j = i + 1; j < max; ++j) {
            if (arr[j] < arr[temp])
                temp = j;
        }
        swapValue(&arr[i], &arr[temp]);
    }
}


//插入排序
void insertionSort(int *arr) {
    for (int i = 1; i < max; i++) {
        int temp = arr[i];
        int j;

        for (j = i; j > 0 && arr[j - 1] > temp; j--) {
            arr[j] = arr[j - 1];
        }
        arr[j] = temp;
    }
}


void test01() {
    //creatValue();
    int *p = importValue();

    //排序前
    printValue(p);
    printf("--------------------------------------\n");

    //排序后
    //bubbleSort(p);

    //selectionSort(p);
    //insertionSort(p);

    printValue(p);
    //printf("%p\n", p);
}


int main() {
    test01();
    return EXIT_SUCCESS;
}

运行后截图:在这里插入图片描述

发布了44 篇原创文章 · 获赞 68 · 访问量 5140

猜你喜欢

转载自blog.csdn.net/qq_25404477/article/details/99701057