一、时间复杂度
1、时间频度 T(n),n为问题的规模
即--算法中语句的执行次数。又叫语句频度。
2、时间复杂度
记作 O( f(n) ),这里的f(n)是一个T(n)的同数量级函数。
如O(1)表示算法的语句执行次数为一个常数,不随规模n的增长而增长;
又如T(n)=n^2+3n+4与T(n)=4n^2+2n+1它们的频度不同,
但时间复杂度相同,都为O(n^2)。
3、算法的性能
主要用算法的 时间复杂度 的数量级来评价一个算法的时间性能。
二、空间复杂度
S(n),包括3方面:
1、算法程序的空间
2、初始数据所占的空间
3、算法执行过程中需要的额外空间
三、三种算法---参考了http://blog.chinaunix.net/uid-23860671-id-150518.html
public class MainSort {
private static int[] data = {66,22,55,44,11,33};
private static int LENGTH = data.length;public static void main(String args[]){
System.out.println("hello world");
sortByChoose();
System.out.println("result is:");
printData();}
private static void printData() {
for(int i = 0; i<LENGTH; i++){
System.out.print("*"+data[i]);
}
System.out.print("*");
System.out.println("");}
//选择排序 -- 外层遍历每次找出最小的,放到前面,下次只遍历未排序的后面一段
private static void sortByChoose(){for(int unsortSize = LENGTH ; unsortSize>0 ; unsortSize--){
int temp = LENGTH-unsortSize;
for(int j = LENGTH-unsortSize ; j<LENGTH; j++){ //遍历未排序的找出最小的数的角标
if(data[temp] > data[j]){
temp = j;
}}
System.out.println(""+temp);int x = data[LENGTH-unsortSize];
data[LENGTH-unsortSize] = data[temp];
data[temp] = x;printData();
}
}
//插入排序
private static void sortByInsert(){}
//冒泡排序
private static void sortByPop(){}
}
算法复杂度,及三种主要排序算法的研究,布布扣,bubuko.com