瞎搞排序



package com.xlaohe1.programming.beautiful;

public class T12 {
private static int[] ints = {32,311,3,4,512,3222,44,53,434,123,55};
public static void main(String[] args) {
bubbleM();
}


/**
* 选择排序
* 选择排序就是就是找到当前值到数组的结尾中的最小值与当前值比较,如果当前值大于最小值就和其交换位置
* 然后从此值开始又向后面进行查找,进行判断处理
* 选择排序虽然进行的查找和冒泡排序一样多N^2,但是交换的次数是很少的
*
*/
public static void select() {
int length = ints.length;
int out, in, min;
for(out = 0; out < length; out ++) {
min = out;//把当前值得索引赋给最小值(即,把当前值当成最小值)
for(in = out + 1; in < length; in ++) {//当前值与当前值+1的后面值进行比较
if(ints[in] < ints[min]) min = in;
}
swap(min, out);//把最小值和当前值交换位置才能进行下一次的查询
}
for(int i = 0; i < length; i ++) {
System.out.println(ints[i]);
}
}

/**
* 冒泡排序
*/
public static void bubble() {
for(int i = 0; i < ints.length; i ++) {
for(int j = 0; j < ints.length - i - 1; j ++) {
if(ints[j] > ints[j + 1]){
swap(j, j + 1);
}
}
}
for(int i = 0; i < ints.length; i ++) {
System.out.println(ints[i]);
}
}

//or
public static void bubbleM() {
for(int i = 0; i < ints.length; i ++) {
for(int j = 0; j < i; j ++) {
if(ints[i] < ints[j]) swap(i, j);
}
}
for(int i = 0; i < ints.length; i ++) {
System.out.println(ints[i]);
}
}



/**
* 插入排序
* 插入排序的原理就是从数组的第一个索引(第二个数)开始一个数向右移动,一个数向左移动
* 如果左边的数大于右边的数则进行交换
*/
public static void insert() {
int in, out;//out向右遍历,in向左遍历
for(out = 1; out < ints.length; out ++) {//从第二个数开始,因为第一个数要留给in
int temp = ints[out];
in = out;
while(in > 0 && ints[in - 1] >= temp) {
ints[in] = ints[in - 1];
in --;
}
ints[in] = temp;//交换的都是有序的数
}
for(int i : ints) {
System.out.println(i);
}
}

public static void swap(int one, int two) {
int temp = ints[one];
ints[one] = ints[two];
ints[two] = temp;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值