冒泡排序,动态结构体数组举例
2013-07-04 21:28
225 查看
冒泡排序
动态结构体数组举例
#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; }
相关文章推荐
- 关于结构体数组初始化的问题--深入举例
- 动态构造存放学生信息的结构体数组,按分数排序输出
- 动态计算结构体数组长度
- 第7章结构体数组应用举例之候选人票数统计
- 使用结构体构造数组举例
- 动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有
- 例题:输入学生的各项资料,然后根据学生的分数,重新排序。重新复习结构体,集合,数组,for循环,冒泡排序,水平符的使用。
- 动态数组实现冒泡排序与选择排序
- 结构体数组, 动态申请结构体数组
- 动态构造结构体数组
- 使用vector建立结构体变量的数组,动态进行增加删除和显示
- 【心得】关于删除结构体动态数组指定项的正确方法
- C/C++动态自定义结构体数组实例锻炼-学生成绩排序
- 关于结构体数组初始化的问题--深入举例
- 对结构体数组进行冒泡排序(根据名字大小)
- 类和结构体里的空数组,巧用空数组建立动态缓存区
- 二维动态数组定义及二维静态数组与**P的区别
- 动态分配的数组
- 针对数组的三中排序方式:冒泡排序,选择排序,插入排序
- 【VS开发】【编程开发】【C/C++开发】结构体中的数组与指针的内存分配情况说明