java数组:排序算法(冒泡排序,选择排序,插入排序)
1.冒泡排序
每次拿前一个值跟后一个值比较,如果前一个值大就交换;每一轮会把当前最大值交换到后面,直达排序成功
5个数进行冒泡排序,需要进行4轮比较,每轮比较(个数-轮数)次
n个数进行冒泡排序,需要进行(n-1)次比较,
package cn.xtnotes.u6;
public class T10_MaoPao {
public static void main(String[] args) {
int[] a= {51,66,99,21,42};
for(int i=0;i<a.length-1;i++) {
System.out.println("第"+(i+1)+"轮比较");
for(int j=0;j<a.length-i-1;j++) {
System.out.println("第"+(i+1)+"轮比较,第"+(j+1)+"次比较");
if(a[j]>=a[j+1]) {
int h=a[j];
a[j]=a[j+1];
a[j+1]=h;
}
}
}
for (int x:a) {
System.out.println(x);
}
}
}
选择排序
依次在数组中选择一个值,跟后面所有值进行比较,如果有值比这个值小,就交换
package cn.xtnotes.u6;
public class T10_MaoPao {
public static void main(String[] args) {
int[] a= {51,66,99,21,42};
//选择排序
for(int i=0;i<a.length-1;i++) {
System.out.println("第"+(i+1)+"轮比较");
for(int j=i+1;j<a.length;j++) {
if(a[i]>=a[j]) {
int h=a[1];
a[i]=a[j];
a[j]=h;
}
}
System.out.println("-------");
}
for (int x:a) {
System.out.println(x);
}
}
插入排序
把数组分成左右两部分,假设左边部分已经完成排序;依次从第二个元素开始,把每个元素插入到左边合适的位置.
package cn.xtnotes.u6;
public class T10_MaoPao {
public static void main(String[] args) {
int[] a= {51,66,99,21,42};
//插入排序
for(int i=0;i<a.length-1;i++) {
System.out.println("第"+(i+1)+"轮比较");
for(int j=i+1;j>0;j--) {
if(a[j]<=a[j-1]) {
int h=a[j];
a[j]=a[j-1];
a[j-1]=h;
}else {
break;
}
}
}
for (int x:a) {
System.out.println(x);
}
}
}
阅读剩余
版权声明:
作者:Tin
链接:http://www.tinstu.com/104.html
文章版权归作者所有,未经允许请勿转载。
THE END