冒泡排序
冒泡排序是最常用的数组排序算法之一,它排序数组元素的过程总是将小数往前移、大数往后放,类似水中气泡往上升的过程。
例程:冒泡正排序
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;
}
}
}
//输出
showArray(array);
}
/*
* 显示数组种的所有元素
*/
public void showArray(int[] array) {
for(int i : array) { //遍历数组
System.out.print(" > " + i);
}
}
}
直接选择排序
直接选择排序属于选择排序的一种,它的排序速度要比冒泡排序相对快一点,也是常用的排序算法。
基本思想是将指定排序位置与数组其他元素进行对比,如果满足条件就交换元素。
例程:直接选择排序正排序
/*
* 直接选择排序算法例程
*
*/
public class SelectSort {
public static void main(String[] args) {
//创建一个乱序数组
int[] array = {63,4,24,1,3,15};
//创建直接排序类的对象
SelectSort sorter = new SelectSort();
//调用一下方法排序
sorter.sort(array);
}
/*
* 直接选择排序算法
* @param array 要排序的数组
*/
public void sort(int[] array) {
int index;
for(int i = 1; i < array.length; i++) {
//index用来标记一轮排序所选择元素的位置
index = 0;
//注意j的初始值要从1开始,每遍历一遍,所需要遍历的数组元素长度-1
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);
}
/*
* 显示数组中的所有元素
* @param array 要显示的数组
*/
public void showArray(int[] array) {
for(int i : array) {
System.out.print(" > " + i);
}
System.out.println();
}
}
反转排序
反转排序也是常用的开发算法,就是将原有数组的按相反的顺序重新排列。基本思想就是将最后一个元素与第一个元素替换,倒数第二个与第二个元素替换,一次类推,直到完成所有反转。
例程:反转排序
public class ReverserSort {
public static void main(String[] args) {
int[] array = {10,20,30,40,50,60};
//创建反转排序类的对象
ReverserSort sorter = new ReverserSort();
//调用排序方法
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();
}
}