下面是幾種排序的用Java的實現:
冒泡排序
public class BubbleSortDemo
{
/**//*
* 從前到後掃描序列,比較相鄰的兩個元素大小,若發現逆序則交換位置 ,
* 使最大的達到序列的最後位置。然後再從後到前掃描剩下的序列,如此 。
* 當數列有序後不再繼續循環
*/
private void bubbleSort(int[] numlist)
{
int in,out,temp;
boolean flag = false;
//從後到前,從最後一項開始到第二項掃描數列。
for( out=numlist.length-1; out>0;out--)
{
flag = true;
//從第一項到第out項掃描數列
for(in=0; in<out; in++)
{
//當前項大於後項,則交換位置。
if(numlist[in]>numlist[in+1])
{
temp = numlist[in];
numlist[in] = numlist[in+1];
numlist[in+1] = temp;
flag = false;
}
}
if(flag) break;
for(int i=0; i<numlist.length; i++)
System.out.print(numlist[i]+ " ");
System.out.println();
}
}
//輸出數列
public void display(int[] numlist)
{
for(int i=0; i<numlist.length; i++)
System.out.print(numlist[i]+ " ");
System.out.println();
}
public static void main(String[] args)
{
BubbleSortDemo sort = new BubbleSortDemo();
int num[] = {4,11,17,6,1,2,13,15};
System.out.println("原序是:");
sort.display(num);
System.out.println("每次冒泡排序後是:");
sort.bubbleSort(num);
}
}
插入排序
public class InsertSortDemo
{
private void insertSort(int[] numlist)
{
int in, out,temp;
//從out處分開數列
for(out=1; out<numlist.length; out++)
{
in = out;
temp = numlist[in]; //temp為待排序數據
while(in>0 && temp<numlist[in-1]) //數 列值大於排序值時,
{
numlist[in] = numlist[in-1]; //數列向右移一位
--in; //指針向左移一位
}
numlist[in] = temp; //插入待排序的數據
}
}
public void display(int[] numlist)
{
for(int i=0; i<numlist.length; i++)
System.out.print(numlist[i]+ " ");
System.out.println();
}
public static void main(String[] args)
{
InsertSortDemo sort = new InsertSortDemo();
int num[] = {4,11,17,6,1,2,13,15};
System.out.print("原序是:");
sort.display(num);
System.out.print("插入排序是:");
sort.insertSort(num);
sort.display(num);
}
}
選擇排序
public class SelectSortDemo
{
/**//*
* 首先找出最小的數據,讓它與第一項互換,這樣最小的數據項就在第一 位。
* 接著從剩下的元素中找出最小的元素,與第二項互換,使第二小的元素 放在第二位,
* 依此類推,直至整個數列有序。
*/
private void selectSort(int[] numlist)
{
int min,in,out,temp;
for(out=0; out<numlist.length; out++)
{
min = out; //將out項設為最小項
for(in=out+1;in<numlist.length; in++) //從第二 項開始掃描
if(numlist[in]<numlist[min]) //找到最 小項in,將in作為最小項
min = in;
//out項與最小值交換
temp = numlist[out];
numlist[out] = numlist[min];
numlist[min] = temp;
}
}
public void display(int[] numlist)
{
for(int i=0; i<numlist.length; i++)
System.out.print(numlist[i]+ " ");
System.out.println();
}
public static void main(String[] args)
{
SelectSortDemo sort = new SelectSortDemo();
int num[] = {4,11,17,6,1,2,13,15};
System.out.print("原序是:");
sort.display(num);
System.out.print("選擇排序是:");
sort.selectSort(num);
sort.display(num);
}
}