JAvaソートアルゴリズム完全版

3360 ワード

Javaクラスのソートを呼び出すには、(ここではintでソート)の3つのケースがあります.
<1>:配列を直接ソート:
 
import java.util.Arrays;

public class SortArray {

	public static void main(String[] args) {
		int []arr1 = {1,9,6,2,7,5,4,8,3};
		int []arr2 = {1,9,6,2,7,5,4,8,3};
		sort(arr1);
		sort(arr2,0,5);
	}
	
	//        [fromIndex,toIndex)    (  fromIndex--(toIndex-1)   )
	public static void sort(int[] arr,int fromIndex,int toIndex){
		Arrays.sort(arr, fromIndex, toIndex);
		System.out.println("Arrays.sort(arr, 0, 5):");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
		System.out.println();
	}
	
	//            
	public static void sort(int[] arr){
		Arrays.sort(arr);
		System.out.println("Arrays.sort(arr):");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
		System.out.println();
	}

}
 
 
<2>:リストを並べ替えること自体でComparableインタフェースを実現
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CollectionsOfSort {
	public static void main(String[] args) {
		List<Stu> list = new ArrayList<Stu>();
		list.add(new Stu(1));
		list.add(new Stu(9));
		list.add(new Stu(6));
		list.add(new Stu(2));
		list.add(new Stu(7));

		sort(list);

	}

	public static void sort(List<Stu> list) {
		Collections.sort(list);
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i).id + " ");
		}
	}
}

class Stu implements Comparable<Stu> {
	Integer id;

	public Stu(int id) {
		this.id = id;
	}

	@Override
	public int compareTo(Stu stu) {
		return this.id.compareTo(stu.id);
		// return stu.id.compareTo(this.id);//    
	}
}
 
 
<3>:Listを並べ替えて書き換えるプログラムでComparatorインタフェースを実現する
 
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class CollectionsOfSort {
	public static void main(String[] args) {
		List<Person> listPerson =new ArrayList<Person>();
		listPerson.add(new Person(1));
		listPerson.add(new Person(9));
		listPerson.add(new Person(6));
		listPerson.add(new Person(2));
		listPerson.add(new Person(7));
		sort(listPerson, new SortPerson());

	}

	public static void sort(List<Person> list, Comparator<Person> c) {
		Collections.sort(list, c);
		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i).age + " ");
		}
	}

}

class SortPerson implements Comparator<Person> {
	@Override
	public int compare(Person p1, Person p2) {
		return p1.age.compareTo(p2.age);
		// return p2.age.compareTo(p2.age);//  
	}

}

class Person {
	public Person(int age) {
		this.age = age;
	}

	Integer age;
}