冒泡 选择 插入排序

冒泡
冒泡排序实现口诀:n 个数字来比较外层循环n-1,内层循环n-1-i。
public static void main(String[] args){
//定义数组和变量
int[] a={8,8,6,5,4};
for(int i=1;i<a.length;i++){
System.out.println(a[i]);
}
}
static void sort (int [] a){
for(int i=0;i<a.length-1;i++){//外循环
for(int j=0;j<a.length-1-i;j++){//内循环
if(a[j]>a[j+1]){
int temp;//实现两个数的交换
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
}
第一层:
第1次比较:(8,7,)6,5,4
第2次比较: 7,(8,6)5,4 第3次比较:7,6,(8,5),4 第4次比较:7,6,5,(8,4) 展现结果:7,6,5,4,8 第二层: 第1次比较:(7,6),5,4,8 第2次比较:6,(7,5),4,8 第3次比较:6,5,(7,4),8 展现结果:6,5,4,7,8 第三层: 第1次比较:(6,5),4,7,8 第2次比较:5,(6,4),7,8 展现结果:5,4,6,7,8 第4层: 第1次比较:(5,4),6,7,8 展现结果:4,5,6,7,8
选择
算法思想:从头至尾扫描序列,找出一个最小的元素和第一个元素交换,接着从剩下的元素中继续这种选择和交换,直到成为一个有序数列。
原始数列:8,7,5,6,4 1,选择数列中有无序和有序两部分,开始为无序 8,7,5,6,4 2,从无序中选择一个最小的元素和第一个元素交换,此时就产生了一个元素的有序数列,无序数列减一。 {4},{7,5,6,8} 3,从无序序列中取出最小的元素5,将5同无序序列第一个元素交换,此时产生仅两个元素的有序序列,无序序列减一。 {4,5},{7,6,8} 4,从无序序列中取出最小的元素6,将6同无序序列第一个元素交换,此时产生含三个元素的有序序列,无序序列减一。 {4,5,6},{7,8}, 5,从无序序列中取出最小的元素7,将7同无序序列第一个元素交换,此时产生含四个个元素的有序序列,无序序列减一。 {4,5,6,7},{8} 6,最后一个元素肯定是最大元素,无序排序直接生产一个有序的序列。
{4,5,6,7,8}
public static void main(String [] args){ int [] a={8,7,5,6,4}; selectSort(a); for(int i=0;i<a.length;i++){ System.out.println(a[i]);
}
} static void selectSort(int[] a){ //要经过n-1次比较 for(int i=0;i<a.length-1;i++){ int min=1; //每次比较n-i for(intj=i+1;j<a.length;i++){ if(a[min]>a[j]){ //记录目前能找到的最小元素的下标 min=j; } } if(min!=i){ int temp;//将找到的最小元素和i位置的的元素进行交换 temp=a[i]; a[i]=a[min]; a[min]=temp;
}
}
}
}
插入
初始状态:
a[0] a[1] a[2] a[3] a[4]
(4) 6 5 8 7
(4 6) 5 8 7
(4 5 6) 8 7
(4 5 6 7) 8
(4 5 6 7 8)
public static void main(String [] args){
int [] a={4,6,5,8,7}
insertSort(a);
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
static void insertSort(int [] a){
for(int i=0;i<a.length-1;i++){
int current=a[i+1];
int j=i;
while(j>=0 && a[j]>current){
a[j+1]=a[j];
j–;
}
a[j+1]=current;
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值