首页 > 代码库 > 算法复杂度,及三种主要排序算法的研究
算法复杂度,及三种主要排序算法的研究
一、时间复杂度
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 = http://www.mamicode.com/{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(){ } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。