您的位置:首页 > 编程语言 > Java开发

java常用排序算法

2011-06-29 14:08 197 查看
一、选择排序

public class NumberSort {

private static int arrays[];
public static void main(String[] args) {
read(args);
System.out.print("排序之前:");
print(arrays);
System.out.print("排序之后:");
selectionSort(arrays);
print(arrays);
}

//定义一个从命令行读取参数的方法
private static void read(String[] args) {
arrays = new int[args.length];
for (int i=0; i<args.length; i++) {
arrays[i] = Integer.parseInt(args[i]);
}
}

//定义一个将数组中的各个元素打印出来的方法
private static void print(int[] arrays) {
for (int array : arrays) {
System.out.print(array + " ");
}
System.out.println();
}

//定义一个用选择排序算法进行排序的方法
private static void selectionSort(int[] arrays) {
for (int i=0; i<arrays.length; i++) {
for (int j=i+1; j<arrays.length; j++) {
if (arrays[i] > arrays[j]) {
int temp = arrays[i];
arrays[i] = arrays[j];
arrays[j] = temp;
}
}
}
}
}
 

优化后的选择排序算法

public class NumberSort {

private static int arrays[];
public static void main(String[] args) {
read(args);
System.out.print("排序之前:");
print(arrays);
System.out.print("排序之后:");
selectionSort(arrays);
print(arrays);
}

//定义一个从命令行读取参数的方法
private static void read(String[] args) {
arrays = new int[args.length];
for (int i=0; i<args.length; i++) {
arrays[i] = Integer.parseInt(args[i]);
}
}

//定义一个将数组中的各个元素打印出来的方法
private static void print(int[] arrays) {
for (int array : arrays) {
System.out.print(array + " ");
}
System.out.println();
}

//定义一个用选择排序算法进行排序的方法
private static void selectionSort(int[] arrays) {
int k = 0;
int temp = 0;

for (int i=0; i<arrays.length; i++) {
k = i;

for (int j=k+1; j<arrays.length; j++) {
if (arrays[k] > arrays[j]) {
k = j;
}
}

if (k != i) {
temp = arrays[i];
arrays[i] = arrays[k];
arrays[k] = temp;
}
}
}
}
 

 

二、冒泡排序法

 

public class BubbleSort {
public static void main(String[] args) {
Date[] days = new Date[5];
days[0] = new Date(2006, 5, 4);
days[1] = new Date(2006, 7, 4);
days[2] = new Date(2008, 5, 4);
days[3] = new Date(2004, 5, 9);
days[4] = new Date(2004, 5, 4);

bubbleSort(days);

for (Date day : days) {
System.out.println(day);
}

}
private static void bubbleSort(Date[] days) {
Date temp = null;
for (int i=days.length-1; i>0; i--) {
for (int j=0; j<i; j++) {
if (days[j].compare(days[j+1]) > 0) {
temp = days[j];
days[j] = days[j+1];
days[j+1] = temp;
}
}
}
}
}
class Date {
private int year, month, day;

public Date(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}

public int compare(Date date) {
return this.year > date.year ? 1
: this.year < date.year ? -1
: this.month > date.month ? 1
: this.month < date.month ? -1
: this.day > date.day ? 1
: this.day < date.day ? -1
: 0;
}

public String toString() {
return "Year:Month:Day -- " + this.year + "-"
+ this.month + "-"
+ this.day;
}
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息