package arithmetic;
import junit.framework.TestCase;
public class Simple extends TestCase{
int[] array={8,10,5,12,9,22,3};
/**
* 冒泡排序
* 效率O(N*N),比较N*N/2,交换N*N/4
*/
public void testSimpleSort1(){
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
/**
*
* 选择排序
* 先假设i设置为min,遍历数组,index为 i的跟 i+1 到 arra.length的元素比较,
* 谁的元素最小,标记下标,设置为min,最后判断若 i!=min,将最小的元素跟i交换
* 效率O(N*N),比较N*N/2,交换<N
*/
public void testSimpleSort2(){
int min,out,in;
for(out=0;out<array.length-1;out++){
min=out;
for(in=out+1;in<array.length;in++){
if(array[in]<array[min])
min=in;
}
if(min!=out){
int temp=array[out];
array[out]=array[min];
array[min]=temp;
}
}
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
/**
* 插入排序
* 假设数组部分是有序的,out标记第一个无序元素,保存到temp中,
* in标记空位置,依次比较temp中的值和in-1的值,
* 若in-1>temp,后移,直到遇到第一个比temp小的值,在其下一位插入
* 效率O(N*N),比较N*N/4,交换N*N/4
*/
public void testSimpleSort3(){
int in,out;
for(out=1;out<array.length;out++){
int temp=array[out];
in=out;
while(in>0 && temp<array[in-1]){
array[in]=array[in-1];
in--;
}
array[in]=temp;
}
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
}
简单排序
最新推荐文章于 2022-11-17 17:31:55 发布