Always keep a begin|

奕帆卷卷

园龄:1年4个月粉丝:3关注:0

排序算法——冒泡,插入,选择排序

冒泡排序

冒泡排序是一种简单的排序算法
实际上是每一次排序都会将最大的元素放到最后
比较相邻的元素,如果第一个比第二个大,就交换他们两个
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数
针对所有的元素重复以上的步骤

点击查看代码
int len = arr.length;
for (int i = 0; i < len - 1; i++) {
boolean flag = true;
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
flag = false;
}
}
if (flag) {
break;
}
}

** 选择排序**

首先在末排序序列中找到最小元素,存放到排序序列的起始位置
再从剩余没有排序的元素再找到最小的元素,然后放到已排序序列的末尾
然后重复剩余元素

点击查看代码
int len = arr.length;
for (int i = 0; i < len - 1; i++) {
int minVal = i;
for (int j = i + 1; j < len; j++) {
if (arr[minVal] > arr[j]) {
minVal = j;
}
}
if (minVal != i) {
int tmp = arr[i];
arr[i] = arr[minVal];
arr[minVal] = tmp;
}
}

插入排序

首先从第一个元素开始,该元素被认为是有序的
取出第一个元素,在已经排序的元素序列中从后往前进行扫描
如果该已经排好序的元素大于新元素,则将该元素移到下一位置
重复步骤,一直到找到已排序的元素小于或者等于新元素的位置

点击查看代码
for (int i = 1; i < arr.length; i++) {
int val = arr[i];
int j = i;
while (j > 0 && val < arr[j - 1]) {
arr[j] = arr[j - 1];
j--;
}
arr[j] = val;
}

本文作者:奕帆卷卷

本文链接:https://www.cnblogs.com/yifan0820/p/17798979.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   奕帆卷卷  阅读(10)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起