数组排序算法:
冒泡排序:在程序设计中,经常需要将一组数列排序,这样更加方便统计与查询。
程序常用的排序方法有冒泡排序、选择排序和快速排序等。
使用冒泡排序法来正排序
public class BubbleSort {
public static void main(String[] args) {
//创建一个数组,这个数组元素是乱序的
int[] array={63,4,24,1,3,15};
//创建冒泡排序类的对象
BubbleSort sorter=new BubbleSort();
//调用排序方法将数组排序
sorter.sort(array);
}
public void sort(int[] array) {
for(int i=1; i<array.length;i++){
//比较相邻的两个元素,较大的数往后冒泡
for(int j=0;j<array.length-i;j++){
if(array[j]>array[j+1]){
int temp=array[j];//把第一个元素值保存到临时变量中
array[j]=array[j+1];//把第二个元素值保存到第一个元素单中
array[j+1]=temp;//把临时变量(也就是第一个元素原值)保存到第二个元素中
}
}
}
showAarray(array);
}
private void showAarray(int[] array) {
for(int i:array){
System.out.println(">"+i);
}
System.out.println();
}
}
执行结果为:
>1
>3
>4
>15
>24
>63
直接选择排序的基本思想是将排序位置与其他数组元素分别对比,如果条件满足就交换元素值,
注意这里区别冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换。
public class SelectSort {
public static void main(String[] args) {
//创建一个乱序的排序数组
int[] array={63,4,24,1,3,15};
//创建直接排序类的对象
SelectSort sorter=new SelectSort();
//调用排序对象的方法将数组排序
sorter.sort(array);
}
public void sort(int[] array) {
int index;
for(int i=1;i<array.length;i++){
index=0;
for(int j=1;j<array.length-i;j++){
if(array[i]>array[index]){
index=j;
}
}
//交换在位置Array.length-i和index(最大值)上的两个数
int temp=array[array.length-i];
array[array.length-i]=array[index];
array[index]=temp;
}
showArray(array);
}
//显示所有元素
public void showArray(int[] array) {
for(int i:array){
System.out.println(">"+i);
}
System.out.println();
}
}
执行结果为:
>3
>1
>4
>15
>24
>63
反转排序:
数组的最后元素和第一个元素替换,倒数第二个元素与第二个元素替换依此类推,直接把所有数组元素反转替换
public class ReverseSort {
public static void main(String[] args) {
int[] array={10,20,30,40,50};
ReverseSort sorter=new ReverseSort();
sorter.sort(array);
}
public void sort(int[] array) {
System.out.println("数组原有内容");
showArray(array);//输出排序前的数组值
int temp;
int len=array.length;
for(int i=0; i<len/2;i++){
temp=array[i];
array[i]=array[len-1-i];
array[len-1-i]=temp;
}
System.out.println("数组反转后的内容");
showArray(array);
}
public void showArray(int[] array) {
for(int i:array){
System.out.print(" "+i);
}
System.out.println();
}
}
执行结果为:
数组原有内容
10 20 30 40 50
数组反转后的内容
50 40 30 20 10