今晚看了一下麻省理工的算法公开课,看了一下国外是如何学习计算机的,算是涨了个见识,观看地址如下:
http://v.163.com/special/opencourse/algorithms.html
其中老师说,在数组大小超过30时,归并排序就比插入排序效率高,不知是否是真的
排序类,已经写好了插入排序
package com.yf.algorithm;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Sort {
public static void main(String args[]) {
/*
* 先创建一个数组
*/
Integer original[] = createArray(30);
/*
* 打印原始数组元素
*/
printArray(original);
/*
* 进行数组排序
*/
Integer[] result = sortByInsert(original);
/*
* 输出排序后的记过
*/
printArray(result);
}
/*
* 进行插入排序,将输入数组按照从小到大排序
*/
public static Integer[] sortByInsert(Integer[] original) {
long start=System.currentTimeMillis();
for (int j = 0; j < original.length; j++) {
for (int i = 0; i < j; i++) {
if (original[j] < original[i]) {
int temp = original[j];
original[j] = original[i];
original[i] = temp;
}
}
}
long end=System.currentTimeMillis();
System.out.println(end-start);
return original;
}
/*
* 产生数组方法,输入数组长度,随即返回一个数组
*/
public static Integer[] createArray(int size){
List<Integer> list=new ArrayList<Integer>();
Integer j=0;
while(j<size){
Random rand=new Random();
int temp=rand.nextInt(1000);
list.add(temp);
j=list.size();
}
return (Integer[])list.toArray(new Integer[list.size()]);
}
/*
* 输出数组中的所有元素
*/
public static void printArray(Integer[] array){
for (int out : array) {
System.out.print(out);
System.out.print(",");
}
System.out.print("\n");
}
}
分享到:
相关推荐
编程实现 快速排序,堆排序,归并排序,插入排序,选择排序; 对于不同的数组大小,比较这些算法的复杂度; 数组的测试,分为已排序数组和随机数组。
选择排序、插入排序、冒泡排序以及快速排序和归并排序的C语言实现,绝对可用
7大排序算法(快速排序,冒泡排序,选择排序,归并排序,插入排序,希尔排序,堆排序)实现源码
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
直接插入排序 冒泡排序 快速排序 直接选择排序 堆排序 二路归并排序 C#源代码 使用C#实现的数据结构中的排序算法
用C++,模板写的 7中排序. 快速排序, 归并排序,插入排序,选择排序,起泡排序,堆排序,希尔排序
冒泡排序,选择排序,插入排序,希尔排序,堆排序,归并排序,快速排序源码实现,里面有详细讲解,对新手应该有帮助
归并排序,插入排序,以及两种排序算法的结合C++实现
MATLAB实现《算法设计与分析》中的插入排序、二分归并排序、归并排序实验,其中包括.m文件和实验报告,安徽大学本科课程。
直接插入排序 选择排序 堆排序 归并排序 快速排序 冒泡排序等七种排序方法
使用c语言比较几种常用排序的使用时间(归并排序、插入排序、归并排序、冒泡排序、选择排序)
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
选择排序,冒泡排序,插入排序 基数排序,快速排序,归并排序
其中包含了各种对数组排序的方法,数组下标从1开始,有插入排序(直接插入排序、希尔排序),交换排序(起泡排序、快速排序),选择排序(简单选择排序,堆排序(另外写))、归并排序(递归,非递归)。
插入排序、冒泡排序、归并排序、快速排序四种排序方式的C++实现,各写成了一个函数,主函数中可以选择调用那一个。初始化数组时用的是随机种子srand((int)time(0))。在宏中定义数组大小。
给初学者学习算法用,用java实现的排序算法,包括二路归并和插入排序。
插入排序、选择排序、希尔排序、堆排序、冒泡、双向冒泡、快速排序、归并排序、递归的归并排序、基数排序
快速排序,归并排序,插入排序的实现,能运行
C++实现,有详细注释,分别实现了快速排序+归并排序+插入排序,并有测试程序
C_算法源码(冒泡排序+基数排序+插入排序+快速排序+归并排序 C_算法源码(冒泡排序+基数排序+插入排序+快速排序+归并排序 C_算法源码(冒泡排序+基数排序+插入排序+快速排序+归并排序 C_算法源码(冒泡排序+基数排序+...