双向冒泡
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <stdlib.h> int main() { int arr[] = { 9,8,7,7,5,6,1,2,0,0 }; for ( int i = 0; i < 9; i++) {<br> for ( int j = 0; j < (9-i); j++) //找最大 { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } for ( int k = 9; k > i; k--) //找最小 { if (arr[k-1] > arr[k]) { int temp = arr[k-1]; arr[k - 1] = arr[k]; arr[k] = temp; } } }<br> for ( int i = 0; i < 10; i++) { printf( "%d " , arr[i]); } return (0); } |
可优化:
1、可以在函数的开始定义一个flag=false,产生交换后置为true;如果在之后的某一趟遍历中没有产生交换,即flag=false就说明表有序,直接返回就可。
2、使用while,定义上下界,找到最大或最小后,修改上下界
本文作者:durtime
本文链接:https://www.cnblogs.com/durtime/p/16703672.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2021-09-17 springboot自定义Converter