冒泡排序
package sortMethods;
/**
* 冒泡排序算法的实现
* 基本思想:比较相邻的元素,如果符合条件
* (正序:前一个元素大于后一个,逆序:前一个元素小于后一个)
* 则进行交换,把较大(小)的元素移动到数组尾部
* @author Administrator
*
*/
public class BuddleSort {
public static void main(String[] args) {
int [] arr = {2,45,3,7,9,10,22};
BuddleSort bs = new BuddleSort();
bs.sort(arr);
}
void sort(int[] array){
//从i=1开始? 如果i=0,则j+1下标越界,数组中元素的比较通过j实现,通过i控制实现数组中所有元素的比较
for (int i = 1; i < array.length; i++) {
//j < array.length-i? 一次循环将当前数组中最大的数移动到最后,因此每进行一次一次循环,需要比较的元素数目-1
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);
}
void showArray(int[] array){
System.out.println("冒泡排序:");
//循环打印数组
for (int i : array) {
System.out.print(i+"\t");
}
}
}
选择排序
package sortMethods;
/**
* 选择排序算法的实现
* 基本思想:将指定位置的元素与其他位置比较
* (区别于冒泡排序,这里是将该元素与所有元素进行比较,因此没进行一次循环即减少一次比较),
* 满足条件:
* (正序:前一个元素大于后一个,逆序:前一个元素小于后一个)
* 则进行交换,把较大(小)的元素移动到数组尾部
* @author Administrator
*
*/
public class SelectSort {
public static void main(String[] args) {
int [] arr = {2,45,3,7,9,10,22};
SelectSort ss = new SelectSort();
Long startTime = System.currentTimeMillis();
ss.sort(arr);
Long endTime = System.currentTimeMillis();
Long time = endTime-startTime;
System.out.println();
System.out.println("选择排序运行时间:"+time);
}
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;
}
}
//交换array[index](比较得到的最大值)与array[array.length-i](位于当前数组末尾的元素)的值
int temp = array[array.length-i];
array[array.length-i] = array[index];
array[index] = temp;
}
showArray(array);
}
void showArray(int[] array){
System.out.println("选择排序:");
//循环打印数组
for (int i : array) {
System.out.print(i+"\t");
}
}
}
反转排序
package sortMethods;
/**
* 反转排序算法的实现
* 基本思想:将元素最后一个元素与第一个元素交换
* 交换次数 :array。length/2次
* @author Administrator
*
*/
public class ReverseSort {
public static void main(String[] args) {
int [] arr = {2,45,3,7,9,10,22};
ReverseSort rs = new ReverseSort();
rs.sort(arr);
}
void sort(int[] array){
System.out.println("反转排序之前:");
showArray(array);
for (int i = 1; i < array.length; i++) {
//位置反转
int temp = array[array.length-1-i];
array[array.length-1-i] = array[i];
array[i] = temp;
}
System.out.println();
System.out.println("反转排序之后:");
showArray(array);
}
void showArray(int[] array){
//循环打印数组
for (int i : array) {
System.out.print(i+"\t");
}
}
}