数组排序算法
今日份学习为数组的排序算法。
数组的排序算法分为三种:冒泡排序,直接选择排序以及反转排序。
- 冒泡排序冒泡排序法在先前的C语言学习中已经有过接触。它的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组面前,把较大的元素移动到数组后面。
【例】冒泡排序
ackage SelectSort;
public class BubbleSort {
public static void main(String[] args) {
int [] array= {63,4,24,1,5,8};
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;
}
}
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.print(">"+i);
}
System.out.println();
}
} - 直接选择排序直接排序的基本思想:不是交换相邻元素,而是把满足条件的元素与指定的排序位置元素交换,这样排序好的位置逐渐扩大,直至整个数组都变成已排序好的格式。
【例】直接排序
public class SelectSort {
public static void main(String[] args) {
int[] array= {63,4,25,78};
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[j]>array[index]) {
index=j;
}
}
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.print(">"+i);
}
System.out.println();
}
} - 反转排序
反转排序的基础思想:把数组最后一个元素与第一个元素替换,倒数第二个元素与第二个元素替换,以此类推,直到把所有数组元素反转替换。
(反转排序是对数组两边元素进行替换,所以只需要循环数组长度的半数次)
【例】反转排序
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("\t"+i);
}
System.out.println();
}
}
标签:index,int,数组,array,排序,public From: https://blog.51cto.com/u_15966010/7500702