冒泡、选择、插入排序

冒泡排序在发现比它小的时候就交换,选择排序只有在确定了最小的数据之后,才会发生交换。
插入排序速度比冒泡排序速度快一倍,比选择排序速度还快些。
冒泡排序:
第一种方式:
int[] arr = new int[] { 22, 55, 44, 66, 33, 11, 77, 99, 88 ,0};
int count = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - i -1; j++) {
if (arr[j] > arr[j + 1]) {
count++;
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}

System.out.println("count:"+count);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}

第二种方式:
int[] arr = new int[] { 22, 55, 44, 66, 33, 11, 77, 99, 88 ,0};
int x,y;
int count = 0;
for (x = arr.length-1;x>0;x--) {
for (y=0;y<x;y++) {
if(arr[y]>arr[y+1]){
count++;
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}

}
}
System.out.println("count:"+count);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}

得到结果:
count:19
0
11
22
33
44
55
66
77
88
99


选择排序:
int[] arr = new int[] { 22, 55, 44, 66, 33, 11, 77, 99, 88 ,0};
int count = 0 ;
for (int i = 0; i < arr.length; i++) {
int min = i; /* 将当前下标定义为最小值下标 */
for (int j = i+1; j < arr.length; j++) {
if(arr[min]>arr[j]){ /* 如果有小于当前最小值的关键字 */
count++;
min = j; /* 将此关键字的下标赋值给min */
}
}
if(i!=min){/* 若min不等于i,说明找到最小值,交换 */
int tmp = arr[min];
arr[min] = arr[i];
arr[i] = tmp;
}
}
System.out.println("count:"+count);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}

得到结果:
count:13
0
11
22
33
44
55
66
77
88
99

插入排序:
int[] arr = new int[] { 22, 55, 44, 66, 33, 11, 77, 99, 88 ,0};
int in,out;
for (out =1 ; out < arr.length; out++) {
int temp = arr[out];
in = out;
while (in>0 && arr[in-1]>temp) {
arr[in] = arr[in-1];
--in;
}
arr[in] = temp;
}
for (int k = 0; k < arr.length; k++) {
System.out.println(arr[k]);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值