package yunnex.mobile;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import yunnex.foundation.base.entity.Province;
import yunnex.foundation.base.service.ProvinceService;
import yunnex.saofu.mall.constants.MallProductOrderStatus;
import yunnex.saofu.mall.dto.order.MallProductOrderDto;
import yunnex.saofu.mall.service.order.ExtProductOrderService;
import java.lang.reflect.Array;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
public class TestMath {
/**
* 冒泡排序的第一種實現(xiàn), 沒有任何優(yōu)化
* @param a
* @param n
*/
private static void BubbleSort1(int [] a, int n){
int i, j;
int num=0;
for(i=0; i<n; i++){ //表示n次排序過程。
for(j=1; j<n-i; j++){
if(a[j-1] > a[j]){//前面的數(shù)字大于后面的數(shù)字就交換
//交換a[j-1]和a[j]
int temp;
temp = a[j-1];
a[j-1] = a[j];
a[j]=temp;
}
num++;
}
}
System.out.println("num:"+num);
}
/**
* 設(shè)置一個標(biāo)志黔衡,如果這一趟發(fā)生了交換辫封,則為true搀继,否則為false。明顯如果有一趟沒有發(fā)生交換樊销,說明排序已經(jīng)完成呵曹。
* @param a
* @param n
*/
private static void BubbleSort2(int [] a, int n){
int j, k = n;
boolean flag = true;//發(fā)生了交換就為true, 沒發(fā)生就為false,第一次判斷時必須標(biāo)志位true钮科。
while (flag){
flag=false;//每次開始排序前唤衫,都設(shè)置flag為未排序過]
for(j=1; j<k; j++){
if(a[j-1] > a[j]){//前面的數(shù)字大于后面的數(shù)字就交換
//交換a[j-1]和a[j]
int temp;
temp = a[j-1];
a[j-1] = a[j];
a[j]=temp;
//表示交換過數(shù)據(jù);
flag = true;
}
}
k--;//減小一次排序的尾邊界
}
}
/**
* 設(shè)置一個標(biāo)志,如果這一趟發(fā)生了交換绵脯,則為true佳励,否則為false。明顯如果有一趟沒有發(fā)生交換蛆挫,說明排序已經(jīng)完成赃承。
* @param a
* @param n
*/
private static void BubbleSort3(int [] a, int n){
int j, k;
int flag = n;
while (flag>0){
k=flag;
flag=0;//每次開始排序前,都設(shè)置flag為未排序過]
for(j=1; j<k; j++){
if(a[j-1] > a[j]){//前面的數(shù)字大于后面的數(shù)字就交換
int temp;
temp = a[j-1];
a[j-1] = a[j];
a[j]=temp;
//表示交換過數(shù)據(jù);
flag = j;
}
}
}
}
public static void main(String[] args) {
int[] arr = {1,1,2,0,9,3,12,7,8,3,4,65,22};
long time1=System.nanoTime();
BubbleSort1(arr, arr.length);
long time2=System.nanoTime();
System.out.println("time1:"+(time2-time1));
long time3=System.nanoTime();
BubbleSort2(arr, arr.length);
long time4=System.nanoTime();
System.out.println("time2:"+(time4-time3));
long time5=System.nanoTime();
BubbleSort3(arr, arr.length);
long time6=System.nanoTime();
System.out.println("time3:"+(time6-time5));
System.out.println(Arrays.toString(arr));
}
}