JAvaソートアルゴリズム完全版
Javaクラスのソートを呼び出すには、(ここではintでソート)の3つのケースがあります.
<1>:配列を直接ソート:
<2>:リストを並べ替えること自体でComparableインタフェースを実現
<3>:Listを並べ替えて書き換えるプログラムでComparatorインタフェースを実現する
<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;
}