代码改变世界

数据结构学习--Java简单排序

2019-10-31 18:44  小花儿鹿  阅读(156)  评论(0编辑  收藏  举报

冒泡排序需要元素每次遍历都从最底部向上冒泡,找到适合的位置后,该位置之后的元素继续向上冒,这样一趟排序结束后,将冒出最大或者最小值。

选择排序需要元素从0号位开始向上遍历一遍,并将最小值放到0号位上,下一次遍历则开始处理1号位元素,以此类推。(选择排序要比冒泡排序效率要高一些)

插入排序需要元素初始时从1号位开始,向后遍历,从比角标小的位置开始对比,遇到比角标元素大的值就将角标前的数组元素后移(该过程不断循环至flag<0,或者比角标值小时结束),并将角标元素插入新位置。

一、冒泡排序

public static void sort(long[] arr){
long tmp = 0;
for(int i = 0;i < arr.length - 1;i ++){
for(int j = arr.length - 1;j > i;j --){
if(arr[j] < arr [j - 1]){
tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
}
}
}
}
二、选择排序
public static void sort(long[] arr){
int k = 0;
long tmp = 0;
for(int i = 0;i < arr.length - 1;i ++){
k = i;
for(int j = i;j < arr.length; j ++){
if(arr[j] < arr[k]){
k = j;
}
}
tmp = arr[i];
arr[i] = arr[k];
arr[k] = tmp;
}
}
三、插入排序
public static void sort(long[] arr) {
long tmp = 0;
for(int i = 1;i < arr.length; i++){
tmp = arr[i];
int j = i;
while (j > 0 && arr[j - 1] >= tmp){
arr[j] = arr[j - 1];
j --;
}
arr[j] = tmp;
}
}