冒泡排序
首先,我先介绍我的冒泡排序代码,分为三个部分:
1.冒泡排序
2.输出
3.主函数
冒泡排序部分
void Bubble_sort(int* a, int sz) { int i = 0; for (i = 0; i < (sz - 1); i++) { int j = 0; for (j = 0; j < ((sz - 1) - i); j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } }
输出函数部分
void Print(int* a, int sz) { int i = 0; for (i = 0; i < sz; i++) { printf("%d ", a[i]); } printf("\n"); }
主函数部分
int main() { int a[10] = { 8,9,6,1,4,66,7,3,5,2 }; int sz = sizeof(a) / sizeof(a[0]); //冒泡排序 Bubble_sort(a, sz); //打印数组 Print(a, sz); return 0; }
总代码
void Bubble_sort(int* a, int sz) { int i = 0; for (i = 0; i < (sz - 1); i++) { int j = 0; for (j = 0; j < ((sz - 1) - i); j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } } void Print(int* a, int sz) { int i = 0; for (i = 0; i < sz; i++) { printf("%d ", a[i]); } printf("\n"); } int main() { int a[10] = { 8,9,6,1,4,66,7,3,5,2 }; int sz = sizeof(a) / sizeof(a[0]); //冒泡排序 Bubble_sort(a, sz); //打印数组 Print(a, sz); return 0; }
控制台输出显示
总代码解释
冒泡排序优化
优化部分:
1.在冒泡排序中,定义了一个flag来控制数组的有序(升序 or 降序);
2.输出部分放在主函数中.
冒泡排序
void Bubble_sort(int* a, int sz) { int i = 0, flag = 1; for (i = 0; i < (sz - 1); i++) { int j = 0; for (j = 0; j < ((sz - 1) - i); j++) { if (a[j] > a[j + 1]) { flag = 0; int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } if (flag == 1) { break; } } }
主函数
int main() { int a[10] = { 8,9,6,1,4,66,7,3,5,2 }; int sz = sizeof(a) / sizeof(a[0]); //冒泡排序 Bubble_sort(a, sz); //输出 int i = 0; for (i = 0; i < sz; i++) { printf("%d ", a[i]); } printf("\n"); return 0; }
总代码
代码优化解释
qsort 排序
qsort 的介绍
使用qsort排序整型数据
int int_cmp(const void* p1,const void* p2) { return (*(int*)p1 - *(int*)p2); } int main() { int a[10] = { 8,9,6,1,4,66,7,3,5,2 }; int sz = sizeof(a) / sizeof(a[0]); qsort(a, sz, sizeof(int), int_cmp); int i = 0; for (i = 0; i < sz; i++) { printf("%d ", a[i]); } printf("\n"); return 0; }
代码解释
在qsort的第四个参数 int_cmp 中
(*(int*)p1) 表示的是把p1强制类型转换成int,再解引用
控制台显示输出如👆上面冒泡结果的相同
使用qsort排序结构数据
在这篇文章中 (链接)-->一.学生成绩管理系统(简单) -->按学生的平均分进行从高到低排序
能找到并详细讲解