没有合适的资源?快使用搜索试试~ 我知道了~
十大经典排序——java实现(csdn)————程序.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 97 浏览量
2021-12-05
18:09:14
上传
评论
收藏 314KB PDF 举报
温馨提示
试读
17页
十大经典排序——java实现(csdn)————程序
资源推荐
资源详情
资源评论
排序算法
排序算法算是我们学习算法的入门篇,在正式介绍各种排序算法前,先介绍一
下要用到的一些术语:
• 稳定排序:如果 a 本来在 b 的前面,且 a==b,排序以后 a 依旧在 b 的前
面,那就是稳定排序,否在是非稳定排序
• 原地排序:就是在排序过程中不申请多于的存储空间,只利用原来存储
待排数据的存储空间进行比较和交换的数据排序。而非原地排序就是需
要利用额外的数组来辅助排序。
总览:
选择排序
代码思路
首先找到数组中最小的元素,其次将其与数组中第一个元素交换位置,然后在
剩下的数组中找到最小的元素,然后和第二个元素交换,以此类推,直到交换
完毕。
特点
数据移动最少,运行时间与数据输入时的顺序无关
复杂度与排序特点
• 时间复杂度:O(n²)
• 空间复杂度:O(1)
• 非稳定排序
• 原地排序
使用环境
数据量少
算法代码
// 从小到大
private static void sort(int[] nums){
int n=nums.length;
int minIndex,temp;
for(int i=0;i<n-1;i++){
minIndex=i;
for(int j=i+1;j<n;j++){
if(nums[j]<nums[minIndex]){
minIndex=j;
}
}
temp=nums[i];
nums[i]=nums[minIndex];
nums[minIndex]=temp;
}
}
插入排序
代码思路
像抓牌一样,将牌暂时放入现在的适当的位置。当到最后一个元素时就排序完
成了。就像把一个无序数组中的数据整合到一个有序数组中。
特点
运行时间与输入情况有关,对于一个部分有序(数组中元素离最终位置都不
远,或者一个有序的大数组加一个小数组)来说速度比较快
复杂度
• 时间复杂度:O(n²)
• 空间复杂度:O(1)
• 稳定排序
• 原地排序
使用环境
数组基本有序,或者一个有序的大数组中添加一些小数据。
算法代码
// 从小到大排序
private static void sort(int[] nums) {
int n=nums.length;
int preIndex,current;
for(int i=1;i<n;i++){
preIndex=i-1;
current=nums[i];
while (preIndex>=0&&nums[preIndex]>current){
nums[preIndex+1]=nums[preIndex];
preIndex--;
}
nums[preIndex+1]=current;
}
}
冒泡排序
代码思路
十分简单,重复访问,依次比较进行交换,交换过多
• 比较相邻元素,大就交换
• 从第一对开始,到最后一对,一次排序后保证最大的位于末尾
• 重复 n 次
特点
思路简单
复杂度
• 时间复杂度:O(n2)
• 空间复杂度:O(1)
剩余16页未读,继续阅读
资源评论
一诺网络技术
- 粉丝: 0
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功