冒泡排序的基本思想就是对相邻的两个元素进行排序, 按照需求条件进行元素交换, 依次排列, 每一次排序都将最大或最小的元素按照顺序依次排到最后一位, 就像水中的气泡一样最大的气泡浮在
最上面, 依次完成数组排序.
代码实现:
/**
* 冒泡排序
*/
public class TestArraySort1 {public static void main(String[] args) {
int[] a={1,4,3,2};
/**
* 思路分析: 从小到大排序, 每相邻的两个元素比较
* 第一次比较:
* a[0]~a[1] a[0]<a[1] 1,4,3,2
* a[1]~a[2] a[1]>a[2] 1,3,4,2
* a[2]~a[3] a[2]>a[3] 1,3,2,4
* 第二次比较:
* a[0]~a[1] a[0]<a[1] 1,3,2,4
* a[1]~a[2] a[1]>a[2] 1,2,3,4
* 第三次比较:
* a[0]~a[1] a[0]<a[1] 1,2,3,4
*
*/
// 双层 for 循环, 外层控制循环次数, 内层循环条件判断和排序.
for (int i = 1; i < a.length; i++) {
for (int j = 0; j <a.length-i ; j++) {
if(a[j]>a[j+1]){
int temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
// 遍历排序后的数组.
for (int i = 0; i <a.length ; i++) {
System.out.println(a[i]);
}
}
}
选择排序:
选择排序的基本思想就是每一次排序的过程中, 一个元素与其它几个元素比较, 按照需求条件进行元素交换, 依次排列, 每一次排序都选择最大或最小的元素放到第一位, 依次完成数组排序.
代码实现:
/**
* 选择排序
*/
public class TestArraySort2 {
public static void main(String[] args) {
int[] a={1,4,3,2};
/**
* 思路分析: 从小到大排序, 每一次排序选择最大的
* 第一次排序:
* a[0]~a[1] a[0]<a[1] 1,4,3,2
* a[0]~a[2] a[0]<a[2] 1,4,3,2
* a[0]~a[3] a[0]<a[3] 1,4,3,2
* 第二次排序:
* a[1]~a[2] a[1]>a[2] 1,3,4,2
* a[1]~a[3] a[1]>a[3] 1,2,4,3
* 第三次排序:
* a[2]~a[3] a[2]<a[3] 1,2,3,4
*
*/
// 双层 for 循环, 外层控制第一个元素, 依次与内层其它元素比较和排序.
for (int i = 1; i < a.length; i++) {
for (int j = i; j <a.length ; j++) {
if(a[i-1]>a[j]){
int temp=a[i-1];
a[i-1]=a[j];
a[j]=temp;
}
}
}
// 循环遍历排序后的数组.
for (int i = 0; i <a.length ; i++) {
System.out.println(a[i]);
}
}
}
来源: http://blog.csdn.net/nono555/article/details/79221031