冒泡排序,动态结构体数组举例

来源:互联网 发布:模拟股指期货交易软件 编辑:程序博客网 时间:2024/05/21 17:06

冒泡排序


#include <stdio.h>// 交换数组中指定两个位置的元素void swap(int * pArr, int pos1, int pos2) {int temp = pArr[pos1];pArr[pos1] = pArr[pos2];pArr[pos2] = temp;}// 冒泡排序void sort(int * pArr, int len) {int i, j;for (i = 0; i < len - 1; i++) {for (j = 0; j < len - 1 - i; j++) {if (pArr[j] > pArr[j + 1]) {swap(pArr, j, j + 1);}}}}// 打印void printArr(int * pArr, int len) {int i = 0;for (; i < len; i++) {printf("%d, ", pArr[i]);}printf("\n");}int main(void) {int a[6] = { 8, 3, 6, 2, 5, 0 };printArr(a, 6);sort(a, 6);printArr(a, 6);return 0;}


动态结构体数组举例

#include <stdio.h>#include <malloc.h>#include <string.h>/*1, 需求学生信息管理系统, 存放所有学生信息, 按分数排序输出2, 设计1) 用数组 存放 所有学生2) 用结构体 描述 每个学生3) 使用 冒泡排序 对学生进行排序 */// 定义结构体struct Student {char name[100];// 姓名float score;// 分数};// 添加学生void addStu(struct Student * pStuArr, char name[100], float score, int index) {strcpy( pStuArr[index].name, name);pStuArr[index].score = score;}// 排序, 按分数降序void sort(struct Student * pStuArr, int len) {int i, j;struct Student temp;for (i = 0; i < len - 1; i++) {for (j = 0; j < len - 1 - i; j++) {if (pStuArr[j].score < pStuArr[j+1].score) {temp = pStuArr[j];// 换学生在数组中的位置, 而不是学生的成绩pStuArr[j] = pStuArr[j+1];pStuArr[j+1] = temp;}}}}// 打印所有学生void printStus(struct Student * pStuArr, int len) {int i;for (i = 0; i < len; i++) {printf("%s, %f \n", pStuArr[i].name, pStuArr[i].score);}}int main(void) {int len = 5;struct Student * stuArr;// 动态构建数组stuArr = (struct Student *) malloc( sizeof(struct Student) * len );int index = 0;// 录入学生信息// scanf("%f", &stuArr[i].score) 给 学生的 score 赋值// scanf("%s", stuArr[i].name) 给学生 name 赋值, name本身就是 char数组的首地址,无需用"&"addStu(stuArr, "小红-66", 66.6f, index++);addStu(stuArr, "大红-55", 55.5f, index++);addStu(stuArr, "大黄-88", 88.8f, index++);addStu(stuArr, "小黄-77", 77.7f, index++);addStu(stuArr, "晓晓-44", 44.4f, index++);// 给学生排序, 按分数 降序sort(stuArr, len);// 打印printStus(stuArr, len);return 0;}




原创粉丝点击