面试常见的排序算法


import java.util.Arrays;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class SequenceTest{

String [] arrs={"m","q","c","d","2","奶","7","a","茶","8","5","v","c","d","2","茶","q","8"};

@Before
public void setUp() throws Exception {
System.out.println("排序前:"+Arrays.asList(arrs));
}

@After
public void tearDown() throws Exception {
System.out.println("排序后:"+Arrays.asList(arrs));
}

/**
* 冒泡排序算法
*/
@Test
public void testBubbleSeq(){
Long startTime=System.currentTimeMillis();
for(int j=1;j<arrs.length;j++){
for(int i=0;i<arrs.length-j;i++){
//比较交换相邻元素
if(arrs[i].toString().compareTo(arrs[i+1].toString())>0){
String temp;
temp=arrs[i];
arrs[i]=arrs[i+1];
arrs[i+1]=temp;
}
}
}
Long endTime=System.currentTimeMillis();
System.out.println("排序用时:"+(endTime-startTime));
}

/**
* 选择排序算法
*/
@Test
public void testSelectSeq(){
Long startTime=System.currentTimeMillis();
int min_index;
for(int i=0;i<arrs.length-1;i++){
min_index=i;
//每次扫描选择最小项
for(int j=i+1;j<arrs.length;j++){
if(arrs[j].compareTo(arrs[min_index])<0){
min_index=j;
}
//找到了最小项后交换位置
if(min_index!=i){
String temp;
temp=arrs[i];
arrs[i]=arrs[min_index];
arrs[min_index]=temp;
}
}
}
Long endTime=System.currentTimeMillis();
System.out.println("排序用时:"+(endTime-startTime));
}
/**
* 插入排序算法
*/
@Test
public void testInsertSeq(){
Long startTime=System.currentTimeMillis();
//从第二个位置开始循环
for(int i=1;i<arrs.length;i++){
//将元素暂存在temp中
String temp=arrs[i];
int j=i-1;
//将temp和已经排序的元素比较,找出适合插入的位置
while(j>=0 && arrs[j].compareTo(temp)>0){
arrs[j+1]=arrs[j];
j--;
}
arrs[j+1]=temp;
}
Long endTime=System.currentTimeMillis();
System.out.println("排序用时:"+(endTime-startTime));
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值