class Demo_BubbleSort //冒泡
{
public static void main(String[] args)
{
//冒泡 相邻两个元素之间进行比较
int[] arr = {3,4,1,5};
for(int i=0;i<arr.length;i++){ //如果剩下最后一个元素 没有相邻的元素了 所以可以-1
for(int j=0;j<arr.length-1-i;j++){ //-1是为了防止角标越界
//-i 每一轮比较后 大的值跑到右侧 参与比较的元素都少一个
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
printArray(arr);
}
public static void printArray(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+",");
}
}
}
class Demo_SelectSort //选择
{
public static void main(String[] args)
{
int[] arr = {11,7,10,4,2};
for(int i=0;i<arr.length;i++){ //arr.length-1 最后一次 没有必要自己和自己比了
//第一圈 用0角标的元素 依次和其他角标的元素进行比较 比完一圈 最小的出现在左侧
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
printArray(arr);
}
public static void printArray(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+",");
}
}
}
class Demo_QuickSort//快排
{
public static void main(String[] args)
{
//快速排序
int[] arr = {7,6,3,5,4,8,2};
quickSort(arr,0,arr.length-1);
printArray(arr);
}
public static void quickSort(int arr[],int L,int R){
int i = L;
int j = R;
int p = arr[(L+R)/2];
while(i<=j){
while(arr[i]<p){
i++;
}
while(arr[j]>p){
j--;
}
if(i<=j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
//当第一轮结束后 比5小的 在5的左边 比5大的 在5的右边
//递归
//现在要做的事 将左边 和 右边的数据分别再进行快速排序 直到得到一个从小到大的序列
if(L<j){
quickSort(arr,L,j);
}
if(i<R){
quickSort(arr,i,R);
}
}
}
public static void printArray(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+",");
}
}
}