您的位置:首页 > 其它

《算法》选择排序、插入排序、冒泡排序

2017-04-01 21:54 197 查看

1.选择排序

//选择排序,《算法》p156
package algorithm;

public class Selection_p156{
public  void sort(int[] a){
int N = a.length;//数组长度
for(int i = 0; i < N-1; i++){
for(int j = i+1; j < N; j++){
if(a[j] < a[i]){
int temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
for(int i = 0; i < N; i++){
System.out.println(a[i]);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Selection_p156 test = new Selection_p156 ();
int[] a = {5,4,3,2,1};
test.sort(a);
}
}


思路

将第一个元素与剩余所有元素相比,如果有比第一个元素小的,则互换

再将第二个元素与剩余所有元素相比,如果有比第二个元素小的,则互换

……

2.插入排序

//插入排序,《算法》p1
package algorithm;

public class Insertion_p157 {
public void sort(int[] a){
int N = a.length;
for(int i = 1; i < N; i++){
for(int j = i; j > 0; j--){
if (a[j] < a[j-1])
{
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
for(int i = 0; i < N; i++){
System.out.println(a[i]);
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Insertion_p157 test = new Insertion_p157();
int[] a = {5,4,3,2,1};
test.sort(a);
}

}


思路

将第i个元素插入到前i-1个元素的适当位置中,插入过程为

当前元素小于上一个元素时,则互换位置,不小于时就开始将第i+1个元素插入到前i个元素的适当位置中。

3.冒泡排序

//冒泡排序
package algorithm;

public class Bubble {
public void sort(int[] a){
int N = a.length;
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] = a[j+1];
a[j+1] = temp;
}
}
}
for(int i = 0; i < N; i++){
System.out.println(a[i]);
}

}
public static void main(String[] args) {
// TODO Auto-generated method stub
Bubble test = new Bubble();
int[] a = {5,4,3,2,1};
test.sort(a);
}
}


思路

第一次循环将最大的数排到最后一个,第二次循环将第二大的数排到倒数第二个……

每次循环都从第一个元素开始相邻元素进行比较,如果当前元素比下一个元素更大,则互换,如不大于,则比较下一个和下下个元素……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐