最好,最坏和平均时间复杂度

在查找成功的情况下,若待查找的数据元素恰好是数组的第一个元素,则只需比较一次即可找到,这就是最好情况,T(n)=O(1),称最好时间复杂度。

若是最后一个元素,则要比较n次才能找到。T(n)=O(n),称最坏时间复杂度。

在查找不成功的情况下,无论何时进行不成功的查找都需要进行n次比较,T(n)=O(n)。

成功查找是的平均次数:(n+1)/2,T(n)=O(n)。 称平均时间复杂度。一般取最坏或平均时间复杂度。

public static int rSearch(int a[], int x) {
		int n = a.length;			
		for (int i = 0; i<n&&i!=a[i];i++) {
		if ( i==n)return -1;
		else  return i;	
			}	
				return 0;		
			}

冒泡排序对数组a中的n个整数数据元素进行排序。

                    public class 时间复杂度2 {
                    	public static void Bubble_sort(int[] a, int n) {	
                    				int temp, flag = 1;	
                    			for (int i = 1; i < n && i < flag; i++) {	
                    			flag = 0;				
                    			for (int j = 0; j < n - i; j++) {		
                    			if (a[j] > a[j + 1]) {		
                    			flag = 1;			
                    			temp = a[j];		
                    			a[j] = a[j + 1];				
                    			a[j + 1] = temp;		
                    					}		
                    						}	
                    							}
                    								}
                    								}

此算法正序最好,逆序最坏T(n)= n(n-1)/2+2n(n-1) = O(n*n)

  n个数据元素的a数组中删除第i个元素
public class 时间复杂度3 {
public static int delete(int a[],int n,int i) {	
	int j;	
		if(i<1||i>n) return 0;		
				for(j=i;j<n;j++)			
				a[j-1]=a[j];			
					return 1;	
					}
					}

最坏n-1,最好0,所以求平均T(n)=(n-1)

       常数阶O(1),
       对数阶O(log2n)(以2为底n的对数,下同),
       线性阶O(n),
       线性对数阶O(nlog2n),
       平方阶O(n^2),
       立方O(n^3)
       ,...,
       k次方阶O(n^k),
       指数阶O(2^n)。
            
       随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。

有错误之处,请各位大佬多多指教。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Jason_LH1024/article/details/87870641
今日推荐