2.常见算法的时间复杂度

一.冒泡算法
自己的理解:
对于n个数,
第1趟:比较n-1次才能找出最大(最小)的数字,
第2趟:比较n-2次,
第3趟:比较n-3次
... ...
第n-1趟: 比较1次。(完结)

特点:每趟比较都是相邻的两个数比较,然后把两个之中较大(升序)的放在后面,一趟完毕,最大的数字就被找出来了,下次不再比较。
对应的代码:

mian(){
   int a[10],i,j; 
   int t; //临时变量 
  
   /*输入10个数据*/ 
   for(i=0;i<10;i++){ scanf("%d",&a[i]); } 
   
   /*开始冒泡排序*/ 
   for(j=0;j<9;j++){ 
          for(i=0;i<9-j;i++) 
                 if(a[i]



二.选择排序
原理:
选择排序很简单,他的步骤如下:

从左至右遍历,找到最小(大)的元素的下标,然后与第一个元素交换。
从剩余未排序元素中继续寻找最小(大)元素,然后与第二个元素进行交换。
以此类推,直到所有元素均排序完毕。

之所以称之为选择排序,是因为每一次遍历未排序的序列我们总是从中选择出最小的元素。

 public void sort(){ 
       for(int i = 0; i < arraytoSort.length - 1 ;  i++){
            int min = i;
            int temp;           
            //找出最小值的下标
            for(int j = i + 1;  j < arraytoSort.length ; j++){
                if(arraytoSort[j]  < arraytoSort[min]){
                    min = j;
                 }
            }
            //交换i与min的数组元素,下次+1不再比较了
            temp = arraytoSort[min];
            arraytoSort[min] = arraytoSort[i];
            arraytoSort[i] = temp;
        }
    }

//时间复杂度O(n^2).

三.常用数据结构的时间复杂度
干货分享:http://blog.csdn.net/stardhb/article/details/50453127

你可能感兴趣的:(2.常见算法的时间复杂度)