首页 > 其他分享 >C语言基础(二十八)

C语言基础(二十八)

时间:2024-08-31 08:54:23浏览次数:14  
标签:arr 二十八 int void 基础 C语言 数组 printf include

1、冒泡排序: 

#include "date.h" 
#include <stdio.h>  
#include <stdlib.h>  
#include <time.h>  
  
// 函数声明  
void bubbleSort(int *arr, int n);  
int* createRandomArray(int n, int *size);  
  
int main() { 
    int time = getTime(); 
    int n;  
    printf("请输入数组的大小n: ");  
    scanf("%d", &n);  
  
    // 动态创建数组并填充随机数  
    int *arr = createRandomArray(n, &n); 
  
    // 打印原始数组  
    printf("原始数组: \n");  
    for (int i = 0; i < n; i++) {  
        printf("%d ", arr[i]);  
    }  
    printf("\n");  
  
    // 对数组进行冒泡排序  
    bubbleSort(arr, n);  
  
    // 打印排序后的数组  
    printf("排序后的数组: \n");  
    for (int i = 0; i < n; i++) {  
        printf("%d ", arr[i]);  
    }  
    printf("\n");  
  
    // 释放内存  
    free(arr);  
  
    return 0;  
}  
  
// 创建包含随机数的动态数组  
int* createRandomArray(int n, int *size) {  
    int *arr = (int *)malloc(n * sizeof(int));  
    if (arr == NULL) {  
        printf("内存分配失败!\n");  
        exit(1);  
    }  
  
    srand(time(NULL)); // 初始化随机数种子  
    for (int i = 0; i < n; i++) {  
        arr[i] = rand() % 100; // 生成0到99之间的随机数  
    }  
  
    *size = n; // 如果外部需要知道数组大小,可以返回它 。 
    return arr;  
}  
  
// 冒泡排序函数  
void bubbleSort(int *arr, int n) {  
    int *i, *j, temp;  
    for (i = arr; i < arr + n - 1; i++) {  
        for (j = i + 1; j < arr + n; j++) {  
            if (*i > *j) {  
                // 交换 *i 和 *j  
                temp = *i;  
                *i = *j;  
                *j = temp;  
            }  
        }  
    }  
}

运行结果如下:

 

2、选择排序:

#include "date.h" 
#include <stdio.h>  
#include <stdlib.h>  
#include <time.h>  
  
// 函数原型声明  
void generateRandomArray(int **arr, int n);  
void selectionSort(int *arr, int n);  
void printArray(int *arr, int n);  
  
int main() { 
    int time = getTime(); 
    int n;  
    printf("请输入数组的大小n: ");  
    scanf("%d", &n);  
  
    // 分配内存给数组  
    int *arr = (int *)malloc(n * sizeof(int));  
    if (arr == NULL) {  
        printf("内存分配失败\n");  
        return 1;  
    }  
  
    // 生成随机数并填充数组  
    generateRandomArray(&arr, n);  
  
    // 打印原始数组  
    printf("原始数组: ");  
    printArray(arr, n);  
  
    // 对数组进行排序  
    selectionSort(arr, n);  
  
    // 打印排序后的数组  
    printf("排序后的数组: ");  
    printArray(arr, n);  
  
    // 释放内存  
    free(arr);  
  
    return 0;  
}  
  
// 生成随机数并填充到数组中  
void generateRandomArray(int **arr, int n) {  
    srand(time(NULL)); // 初始化随机数种子  
    for (int i = 0; i < n; i++) {  
        (*arr)[i] = rand() % 100; // 生成0到99之间的随机数  
    }  
}  
  
// 选择排序  
void selectionSort(int *arr, int n) {  
    int i, j, minIndex, temp;  
    for (i = 0; i < n - 1; i++) {  
        minIndex = i;  
        for (j = i + 1; j < n; j++) {  
            if (arr[j] < arr[minIndex]) {  
                minIndex = j;  
            }  
        }  
        // 交换找到的最小元素和第i个元素  
        temp = arr[minIndex];  
        arr[minIndex] = arr[i];  
        arr[i] = temp;  
    }  
}  
  
// 打印数组  
void printArray(int *arr, int n) {  
    for (int i = 0; i < n; i++) {  
        printf("%d ", arr[i]);  
    }  
    printf("\n");  
}

运行结果如下:

 

3、插入排序:

#include "date.h"
#include <stdio.h>  
#include <stdlib.h>  
#include <time.h>  
  
// 函数声明  
void insertSort(int *arr, int n);  
void printArray(int *arr, int n);  
  
int main() { 
    int times = getTime(); 
    int n, i;  
    printf("请输入数字n: ");  
    scanf("%d", &n);  
  
    // 动态分配数组  
    int *arr = (int *)malloc(n * sizeof(int));  
    if (arr == NULL) {  
        printf("内存分配失败!\n");  
        return 1;  
    }  
  
    // 初始化随机数生成器  
    srand(time(NULL));  
  
    // 生成随机数并存储到数组中  
    for (i = 0; i < n; i++) {  
        arr[i] = rand() % 100; // 生成0到99之间的随机数  
    }  
  
    // 打印原始数组  
    printf("原始数组: ");  
    printArray(arr, n);  
  
    // 对数组进行插入排序  
    insertSort(arr, n);  
  
    // 打印排序后的数组  
    printf("排序后的数组: ");  
    printArray(arr, n);  
  
    // 释放内存  
    free(arr);  
  
    return 0;  
}  
  
// 插入排序函数  
void insertSort(int *arr, int n) {  
    int i, key, j;  
    for (i = 1; i < n; i++) {  
        key = arr[i];  
        j = i - 1;  
  
        /* 将arr[i]插入到arr[0], arr[1], ..., arr[i-1]中已排序的序列中 */  
        while (j >= 0 && arr[j] > key) {  
            arr[j + 1] = arr[j];  
            j = j - 1;  
        }  
        arr[j + 1] = key;  
    }  
}  
  
// 打印数组函数  
void printArray(int *arr, int n) {  
    for (int i = 0; i < n; i++) {  
        printf("%d ", arr[i]);  
    }  
    printf("\n");  
}

运行结果如下:

 

 

 

标签:arr,二十八,int,void,基础,C语言,数组,printf,include
From: https://blog.csdn.net/wehpd/article/details/141739605

相关文章

  • C语言基础(二十九)
    1、快速排序:#include"date.h"#include<stdio.h>#include<stdlib.h>#include<time.h>//函数声明voidquickSort(int*arr,intlow,inthigh);voidswap(int*xp,int*yp);voidprintArray(int*arr,intsize);intpar......
  • 卡尔曼滤波算法(c语言代码)
    卡尔曼滤波器是一种用于估计动态系统状态的算法,常用于信号处理、控制系统、机器人和导航等领域。以下是一个简单的卡尔曼滤波器的C语言实现示例。这个示例展示了如何使用卡尔曼滤波器来估计一维系统的状态。1.卡尔曼滤波器算法概述卡尔曼滤波器由两部分组成:预测和更新。基......
  • Mysql基础练习题 596.查询至少有5个学生的所有班级 (力扣)
    596.查询至少有5个学生的所有班级建表插入数据:CreatetableIfNotExistsCourses(studentvarchar(255),classvarchar(255))TruncatetableCoursesinsertintoCourses(student,class)values('A','Math')insertintoCourses(student,class)values(......
  • 第3天---RSA基础题型(二)
    前言:量是一定要积累的,但是不要一味的追求量,导致学完后面的知识,忘了前面的知识,得不偿失,那我们当然要避免这种情况,那就先花点时间复习昨天的内容。................过了10minT9.添加小因子(e与phi不互素)一.题目:fromCrypto.Util.numberimport*flag=b'NSSCTF{******}'p......
  • Python基础 2 - 程序控制流语句
    文章目录一、程序控制流语句二、if判断语句1、单、双分支if条件格式2、多分支if条件格式:3、if判断语句的嵌套4、三元操作符三、循环语句1、while循环2、for循环延伸:列表推导式3、循环中断4、使用循环常见的错误和陷阱  大家好,我是技术界的小萌新,今......
  • Redis基础知识学习笔记(一)
    文章目录Redis简介Redis简介REmoteDIctionaryServer(Redis)是一个由SalvatoreSanfilippo写的key-value存储系统,是跨平台的非关系型数据库,其是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)......
  • Python基础 3 - 函数及数据容器
    文章目录一、函数概念1、函数介绍2、函数的定义3、函数的调用4、函数说明文档5、函数嵌套调用6、变量作用域1)局部变量2)全局变量3)声明全局变量二、数据容器入门1、列表(list)1)列表的定义2)调用列表元素3)列表的方法4)列表的特点5)列表的遍历(迭代)6)列表的乘......
  • C语言文件相关函数
    目录一、引言二、文件函数概述  1.文件类型指针  2.常用文件函数三、文件函数使用详解  1.打开文件  2.关闭文件  3.写入文件  4.读取文件  5.二进制文件操作四、实战应用五、总结        本文将详细介绍C语言中文件函数的基本概念......
  • 【C语言进阶】C语言指针进阶实战:优化与难题解析
    ......
  • C语言基础(二十六)
    二叉树节点通常包含三个部分:存储数据的部分、指向左子节点的指针、以及指向右子节点的指针。测试代码:#include"date.h"#include<stdio.h>#include<stdlib.h>#include<time.h>//定义二叉树节点的结构,包括节点的值、指向左子节点的指针和指向右子节点的指针。t......