/**
* 冒泡排序and快速排序
*/
public class Sort {
public static void quickSort(int[] data,int start,int end)
{
int i=start;int j=end;
if(i>=j)//退出条件
return;
boolean flag=true;//true表示从右至左搜索,false表示从左至右搜索
while (i!=j)//直到相遇停止,意味这一轮交换完成
{
if(data[i]>data[j])
{
int temp=data[i];
data[i]=data[j];
data[j]=temp;
flag=!flag;//有交换则改变flag,这决定下一次ij改改变谁(搜索往哪个方向走)
}
if(flag)
j--;
else
i++;
}
i--;j++;//递归,二分思想,分别对ij左右两侧再次重复
quickSort(data,start,i);
quickSort(data,j,end);
}
public static void bubbleSort(int []data,int len)
{
for(int i=0;i<len;i++)
{
boolean flag=false;
for(int j=0;j<len-i;j++)
{
if(data[j]>data[j+1])
{
int temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
flag=true;
}
}
if(!flag)//如果未发生交换,意为已经有序了
break;
}
}
public static void main(String[] args) {
int a[]={9,1,4,2,10,3};
bubbleSort(a,a.length-1);
//int a[]={9,1,4,2,10,3};
quickSort(a,0,a.length-1);
for(int i:a)
{
System.out.println(i);
}
}
}