排序算法

1.冒泡排序:

冒泡排序一共要进行(n-1)次循环,每一次循环都要进行当前n-1次比较
所以一共的比较次数是:
(n-1) + (n-2) + (n-3) + … + 1 = n*(n-1)/2;
所以冒泡排序的时间复杂度是 O(n2),空间复杂度O(1)
 
int a[]= {6,5,0,4,2,1,3,9,8};
  int n=a.length;
  for(int i=0;i<n-1;i++) {
   boolean flag=false;
   for(int j=0;j<n-i-1;j++) {
    if(a[j]>a[j+1]) {
     int t=a[j+1];
     a[j+1]=a[j];
     a[j]=t;
     flag=true;    //此次循环进行了交换
    }
   }
   if(!flag) //已经有序,可直接退出
    break;
  }
  for(int i:a) {
   System.out.print(i+" ");
  }

2.快速排序

时间复杂度为O(nlogn) 
public static void main(String[] args) {
		int[] arr = {10,7,2,4,7,62,3,4,2,1,8,9,19};
        quickSort(arr, 0, arr.length-1);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
	}
	public static void quickSort(int[] arr,int low,int high) {
		 if(low>high){
	        return;
	    }
        int tmp=arr[low];
        int i=low,j=high;
        while(i<j) {
        	while(arr[j]>=tmp && i<j) {
        		j--;
        	}
        	
        	while(arr[i]<=tmp && i<j) {
        		i++;
        	}
        	
        	//交换 i j两个位置的元素
        	if(i<j) {
        		int t=arr[j];
            	arr[j]=arr[i];
            	arr[i]=t;
        	}
        }
        arr[low]=arr[i];
        arr[i]=tmp;
        quickSort(arr, low, j-1);
        quickSort(arr, j+1, high);
	}



全部评论

相关推荐

03-29 19:11
门头沟学院 Java
wyp_davis:是可以这样的,不过只要交钱就是假的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务