手机网站模板建站,软件工程项目开发流程,html网页设计结课作业,微信网站开发冒泡排序及其优化
冒泡排序核心思想 冒泡排序的核⼼思想就是#xff1a;两两相邻的元素进⾏⽐较 1题目举例 给出一个倒序数组#xff1a;arr[10]{9,8,7,6,5,4,3,2,1,0} 请排序按小到大输出 1.1题目分析 这是一个完全倒序的数组#xff0c;所以确定冒泡排序的趟数#xff0…冒泡排序及其优化
冒泡排序核心思想 冒泡排序的核⼼思想就是两两相邻的元素进⾏⽐较 1题目举例 给出一个倒序数组arr[10]{9,8,7,6,5,4,3,2,1,0} 请排序按小到大输出 1.1题目分析 这是一个完全倒序的数组所以确定冒泡排序的趟数就是需要九趟冒泡排序 1.2冒泡排序函数实现
//冒泡排序函数
void bubble_sort(int* arr, int sz)//参数接收数组元素个数
{//确定冒泡排序趟数int i 0;for (i 0; i sz - 1; i){//一趟冒泡排序int j 0;for (j 0; j sz - 1 - i; j)//确定交换的对数{if (*(arr j) *(arr j 1)){//交换int temp *(arr j);*(arr j) *(arr j 1);*(arr j 1) temp;}}}
}1.3打印数组函数实现
//打印数组函数
void print(int* arr, int sz)
{int i 0;for (i 0; i sz; i){printf(%d , *(arr));}
}1.4完整代码实际代入实现
#includestdio.h
//冒泡排序
//冒泡排序函数
void bubble_sort(int* arr, int sz)//参数接收数组元素个数
{//确定冒泡排序趟数int i 0;for (i 0; i sz - 1; i){//一趟冒泡排序int j 0;for (j 0; j sz - 1 - i; j)//确定交换的对数{if (*(arr j) *(arr j 1)){//交换int temp *(arr j);*(arr j) *(arr j 1);*(arr j 1) temp;}}}
}
//打印数组函数
void print(int* arr, int sz)
{int i 0;for (i 0; i sz; i){printf(%d , *(arr));}
}
int main()
{int arr[] { 9,8,7,6,5,4,3,2,1,0 };int sz sizeof(arr) / sizeof(arr[0]);bubble_sort(arr, sz);print(arr, sz);return 0;
}1.5运行结果展示 2.题目举例 假设给出一个极端数组arr[10]{9,0,1,2,3,4,5,6,7,8} 给他排序按小到大输出 2.1题目分析 我们观察题目就会发现这个数组只需1趟冒泡排序就会完成排序要求但是如果我们依旧使用上面那个冒泡排序的代码他就会任然在一趟排好的情况下继续两两比较这样就会大大浪费时间所以我们就可以对以上冒泡排序代码进行优化。 2.2冒泡排序函数优化实现
//冒泡排序函数优化
void bubble_sort(int* arr, int sz)//参数接收数组元素个数
{//确定冒泡排序趟数int i 0;for (i 0; i sz - 1; i){int flag 1;//假设数组是有序的//一趟冒泡排序int j 0;for (j 0; j sz - 1 - i; j)//确定交换的对数{if (*(arr j) *(arr j 1)){//交换int temp *(arr j);*(arr j) *(arr j 1);*(arr j 1) temp;flag 0;//不是有序}}if (flag 1)//如果已经有序就跳出循环{break;}}
}2.3打印数组函数实现
//打印数组函数
void print(int* arr, int sz)
{int i 0;for (i 0; i sz; i){printf(%d , *(arr));}
}2.4完整代码优化实际代入实现
//冒泡排序优化
//冒泡排序函数优化
void bubble_sort(int* arr, int sz)//参数接收数组元素个数
{//确定冒泡排序趟数int i 0;for (i 0; i sz - 1; i){int flag 1;//假设数组是有序的//一趟冒泡排序int j 0;for (j 0; j sz - 1 - i; j)//确定交换的对数{if (*(arr j) *(arr j 1)){//交换int temp *(arr j);*(arr j) *(arr j 1);*(arr j 1) temp;flag 0;//不是有序}}if (flag 1)//如果已经有序就跳出循环{break;}}
}
//打印数组函数
void print(int* arr, int sz)
{int i 0;for (i 0; i sz; i){printf(%d , *(arr));}
}
int main()
{int arr[] { 9,0,1,2,3,4,5,6,7,8 };int sz sizeof(arr) / sizeof(arr[0]);bubble_sort(arr, sz);print(arr, sz);return 0;
}2.5运行结果展示