算法排序【时间复杂度O(n^2)】
排序算法的两个原则:
1.输出结果为递增或者递减。
2.输出结果为原输入结果的排列或者重组。
平均时间复杂度为O(n^2)的排序算法有三种:
冒泡排序,插入排序,选择排序。
一。冒泡排序:
即谁冒泡泡冒得快,上升的就快。
1 /*冒泡排序 复杂度O(n^2) 2 * 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 3 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 4 3.针对所有的元素重复以上的步骤,除了最后一个。 5 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 6 */ 7 public int[] BubblingSort(int[] arr) 8 { 9 int temp = 0; 10 boolean unsort = true; 11 12 while(unsort) 13 { 14 for(int i=0;i<arr.length;i++) 15 { 16 if(arr[i]>arr[i+1]) 17 { 18 temp = arr[i]; 19 arr[i] = arr[i+1]; 20 arr[i+1] = temp; 21 unsort = true; 22 } 23 } 24 } 25 return arr; 26 }
冒泡排序平均时间复杂度为O(n^2)。
二。插入排序
工作原理是通过构建有序序列,对于未排序的数据,在已排序的序列中从后向前扫描,找到相应位置并插入。
主要有两个动作:操作和交换。
1 /*插入排序 默认第一个元素是已被排序 2 * 取出下一个元素 在已排序的元素中进行比较 3 * 如果已排序的元素大于该元素 则将该元素移动到下一位置 4 * 直到找到小于或等于的该元素的位置 5 * 将该元素插入到该位置 6 * 如果比较操作的代价大于交换操作的话 就要考虑用二分查找法 7 * 最差复杂度O(N^2) 最优时间复杂度O(N) 平均时间复杂度O(N^2) 空间复杂度O(N) 8 * 和冒泡排序是一个级别 9 */ 10 public void insertSort(int[] data) 11 { 12 int temp = 0; 13 for(int i=1;i<data.length;i++) 14 { 15 for(int j=i;(j>0)&&(data[j]<data[j-1]);j--) 16 { 17 temp = data[j-1]; 18 data[j-1] = data[j]; 19 data[j] = temp; 20 } 21 } 22 }
三,选择排序
在未排序序列中找到最小元素,存放在排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小最小元素,然后放到排序序列的末尾。以此类推,知道所有元素均排序完毕。
1 /*选择排序:首先在未排序的元素中找到最小的元素 放在排序序列的起始位置 2 * 然后在从生下的序列元素中继续找到最小元素,然后放在已排序序列的末尾 3 * 复杂度O(N^2)*/ 4 public void selectionSort(int[] array) 5 { 6 int i,j; 7 int temp; 8 for(i=0;i<array.length-1;i++) 9 { 10 int min = i; 11 for(j=i+1;j<array.length;j++) 12 { 13 if(array[min] > array[j]) 14 { 15 min=j; 16 } 17 } 18 19 temp = array[min]; 20 array[min] = array[i]; 21 array[i] = temp; 22 23 } 24 }
posted on 2013-08-08 19:22 peggy89321 阅读(1007) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧