数组排序算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了数组排序算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2017字,纯文字阅读大概需要3分钟。
内容图文
![数组排序算法](/upload/InfoBanner/zyjiaocheng/600/690341c6591c4beead724ad6ddd684eb.jpg)
1.冒泡排序:
通过每次冒泡排序操作相邻两元素进行比较
找出最大或最小。如果满足条件,两元素间位置进行交换
每一次的冒泡都会找出一个元素达到指定位置
// 空杯子
int cup;
// 0, {33, 52, 68, 16, 92, 73, 29}
比较n-1次
//第1次:[33, 52, 16, 68, 73, 29, 92] i = 0
//第2次:[33, 16, 52, 68, 29, 73, 92] i = 1
//第3次:[16, 33, 52, 29, 68, 73, 92] i = 2
//第4次:[16, 33, 29, 52, 68, 73, 92] i = 3
//第5次:[16, 29, 33, 52, 68, 73, 92] i = 4
//第6次:[16, 29, 33, 52, 68, 73, 92] i = 5
for (int i = 0; i < arr.length - 1; i++) {
// 通过冒泡 每一次找出一个最值
for (int j = 0; j < arr.length - 1 - i; j++) {
if(arr[j]>arr[j+1]){
// 位置互换
cup = arr[j];
arr[j] = arr[j+1];
arr[j+1] = cup;
}
}
System.out.println("第"+(i+1)+"次:"+Arrays.toString(arr));
}
时间复杂度是n的平方
2.选择排序:
在数组中选择性的找出最值,放置到数组的指定位置
然后再在未操作的元素中重复以上操作
// 找最值 最大值
// 定义一个杯子
int cup;
for (int i = 1; i < arr.length; i++) {
// 存储最值下标
int max = arr.length - i;
// 通过该循环找出最值
for (int j = 0; j < arr.length - i; j++) {
if(arr[max]<arr[j]){
// 改变 杯子中存储的下标
max = j;
}
}
// 进行元素的位置互换 arr[max] arr[arr.length-i]
cup = arr[max];
arr[max] = arr[arr.length-i];
arr[arr.length-i] = cup;
System.out.println("第"+i+"次:"+ Arrays.toString(arr));
}
时间复杂度是n的平方
3.插入排序:
把数组切割成两部分,一部分为有序的,一部分为无序
每一次都从无序部分获取一个元素,插入至有序部分
使有序部分每一次都成为一个新的有序数组
{33, 52, 68, 16, 92, 73, 29}
// 空杯子
int cup;
for (int i = 1; i < arr.length; i++) {
for (int j = i; j > 0; j--) {
if(arr[j]<arr[j-1]){
cup = arr[j];
arr[j] = arr[j-1];
arr[j-1] = cup;
}
}
}
时间复杂度是n的平方
4.反转排序:
把数组中的元素顺序反转 {1,2,3,4,5}==>{5,4,3,2,1}
int cup;
for (int i = 0; i < arr.length/2; i++) {
//位置互换
// arr[i] <==> arr[arr.length-i-1]
cup = arr[i];
arr[i] = arr[arr.length-i-1];
arr[arr.length-i-1] = cup;
}
5.快速排序:
// 通过别人帮我写好的直接使用
//Arrays.sort(arr);
// 可以指定位置排序 [fromIndex,toIndex)
Arrays.sort(arr,1,4);
System.out.println(Arrays.toString(arr));
内容总结
以上是互联网集市为您收集整理的数组排序算法全部内容,希望文章能够帮你解决数组排序算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。