1.选择排序法
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列最后,直到全部待排序的数据元素排完。
for (int i = 0; i < array.length; i++) {
int min = array[i];
for (int j = i; j < array.length; j++) {
if (array[j] < min) {
min = array[j];
array[j] = array[i];
array[i] = min;
}
}
}
2.冒泡排序法
比较相邻的元素值,如果满足条件就交换元素值
for(int i=1;i<=array.length-1;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;
}
}
}
3.快速排序法
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程递归进行,以此使整个数据变成有序序列。
package src;
public class QSort
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO 自动生成方法存根
quicksort qs = new quicksort();
int data[] = {44,22,2,32,54,22,88,77,99,11};
qs.data = data;
qs.sort(0, qs.data.length-1);
qs.display();
}
}
class quicksort
{
public int data[];
private int partition(int sortArray[],int low,int hight)
{
int key = sortArray[low];
while(low<hight)
{
while(low<hight && sortArray[hight]>=key)
hight--;
sortArray[low] = sortArray[hight];
while(low<hight && sortArray[low]<=key)
low++;
sortArray[hight] = sortArray[low];
}
sortArray[low] = key;
return low;
}
public void sort(int low,int hight)
{
if(low<hight)
{
int result = partition(data,low,hight);
sort(low,result-1);
sort(result+1,hight);
}
}
public void display()
{
for(int i=0;i<data.length;i++)
{
System.out.print(data[i]);
System.out.print(" ");
}
}
}