`
jasonjiang
  • 浏览: 2647 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

面试常见的排序算法

 
阅读更多
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));
	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics