简单排序算法
冒泡排序:
[java]
import java.util.Arrays;
public class Bubbling {
/**
* @param args
* 冒泡排序:
*
* 假设有 N 个数据需要排序,则从第 0 个数开始,依次比较第 0 和第 1 个数据,
*如果第 0 个大于第 1 个则两者交换,否则什么动作都不做,继续比较第 1 个第 2
*个…,这样依次类推,直至所有数据都“冒泡”到数据顶上。
* 冒泡排序的效率O(N*N),比较 N*N/2,交换 N*N/4;
*
*/
public int[] result(int[] array){ //int型可以换成是Object,但数组元素必须实现compareto()方法。
if(array.length==0){
return array;
}else{
int length,temp;
length = array.length;
for(int i=1;i<length;i++){
for(int a=0;a<length-i;a++){
if(array[a]>array[a+1]){
temp =array[a];
array[a]=array[a+1];
array[a+1]=temp;
}
}
}
}
return array;
}
public static void main(String[] args) {
int[] a =new int[5];
a[0]=1;
a[1]=5;
a[2]=3;
a[3]=0;
a[4]=6;
Bubbling bubbling = new Bubbling();
a=bubbling.result(a);
System.out.println(Arrays.toString(a));
}
快速排序:
[java]
public class QuickSort
{
/**
* @them 快速排序
* 对冒泡排序的改进:首先选一个轴值,将待排序的数据分为两个独立的两部分,左侧小于轴值,右侧大于轴值
* 然后分别对这两部分重复上述部分,直到整个序列有序。
*/
public static void main(String[] args)
{
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(" ");
}
}
}
插入排序:
[java]
import java.util.Arrays;
public class InsertionSort {
/**
* @param args
* @author mayi
*
* 插入排序 是在部分数据有序的情况下,使用 OUT 标记第一个无序的数据,将
其提取保存到一个中间变量 temp 中去,使用 IN 标记空位置,依次比较 temp 中
的值与 IN‐1 的值,如果 IN‐值大于 temp 的值,则后移,直到遇到第一个比temp &nbs
补充:软件开发 , Java ,