今晚看了一下麻省理工的算法公开课,看了一下国外是如何学习计算机的,算是涨了个见识,观看地址如下:
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++代码"的实现可能涉及将这两种排序算法融合在一起,通过判断和选择合适的排序方式来优化排序过程。这种结合方法可以提高算法的灵活性和效率,特别是在处理不同特性的数据集时。学习并理解...
本项目涵盖了五种经典的排序算法:快速排序、堆排序、归并排序、插入排序和选择排序。接下来,我们将深入探讨这些算法的原理、实现及性能特点。 1. **快速排序**: 快速排序由C.A.R. Hoare在1960年提出,是一种采用...
虽然插入排序效率不如快速排序和归并排序,但它具有原地排序和稳定性两个优点,对于小规模或者部分有序的数据,插入排序的性能表现往往很好。 C++实现这三种排序算法时,通常会涉及到递归、指针、数组操作等基础...
本资源包含了几种常见的排序算法,包括堆排序、选择排序、冒泡排序、归并排序和插入排序。这些排序算法各有特点,适用于不同的场景,并且在理解它们的工作原理后,能够帮助初学者更好地掌握编程基础。 1. **堆排序*...
快速排序、归并排序和插入排序是三种基础且重要的计算机科学中的排序算法,它们在不同的场景下具有各自的优点和适用性。以下是对这三个排序算法的详细介绍: ### 快速排序 快速排序由C.A.R. Hoare在1960年提出,其...
在计算机科学领域,排序算法是数据处理中至关重要的一部分,它涉及到如何有效地重新排列一组数据,...插入排序和希尔排序在部分有序数据时有优势。理解并掌握这些排序算法,对于编程和算法设计能力的提升有着重要作用。
这里,我们重点讨论五种经典的排序算法:快速排序、改进快速排序、希尔排序、归并排序和插入排序。这五种排序算法各有特点,适用于不同的场景,并且在实际编程中被广泛应用。 快速排序是一种高效的排序算法,由英国...
选择排序、插入排序、冒泡排序以及快速排序和归并排序的C语言实现,绝对可用
在本资源中,我们主要关注的是使用MATLAB编程语言实现三种经典的排序算法:插入排序、二分归并排序以及归并排序。这些算法是计算机科学基础中的重要组成部分,特别是在算法设计与分析领域。MATLAB是一种强大的数值...
直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序和二路归并排序是计算机科学中经典的排序算法,它们在数据处理和算法学习中占有重要地位。这些排序算法各有特点,适用场景不同,下面将逐一详细介绍,并结合...
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
例如,冒泡排序和选择排序适合小规模数据,而快速排序和归并排序则适用于大规模数据。在实际应用中,应根据具体需求和数据特性选择合适的排序算法。学习和理解这些排序算法的原理及源码实现,对于提升编程能力具有...
在JDK 1.7版本中,ArrayList的实现已经优化,提供了`Collections.sort()`方法,它默认使用TimSort算法,这是一种结合了归并排序和插入排序的混合排序算法,既保证了稳定性,又在大部分情况下有良好的性能表现。...
堆排序是一种不稳定的排序方法,但效率通常优于冒泡排序和插入排序。 7. **希尔排序**:由Donald Shell提出的改进版本的插入排序,通过设置不同的增量将待排序的序列分割成若干子序列,分别进行直接插入排序,然后...
这里我们将深入探讨两种常见的排序算法:插入排序(Insertion Sort)和归并排序(Merge Sort),它们都是在Java环境下实现的。 **插入排序**是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序...
Java中,可以使用`java.util.Arrays.sort()`方法,它内部实现了高效的排序算法,对于小数组可能会使用插入排序,大数组则使用了Timsort,一种结合了归并排序和插入排序优点的混合排序算法。 以上就是关于归并排序、...
例如,对于小规模数据或部分有序的数据,插入排序和冒泡排序可能是好的选择;而对于大规模无序数据,快速排序和归并排序更高效;而基数排序则在处理大量整数排序时表现出色。理解并熟练掌握这些排序算法,对提升编程...
本文将详细探讨五种常见的排序算法——归并排序、插入排序、冒泡排序和选择排序,以及它们在C语言环境下的时间性能比较。 1. **归并排序**: 归并排序是一种基于分治策略的排序算法,它将大问题分解为小问题,再将...
直接插入排序 选择排序 堆排序 归并排序 快速排序 冒泡排序等七种排序方法
总的来说,归并排序的插入排序优化旨在平衡插入排序和归并排序的优点,通过合理选择 k 值,可以在保持高效排序的同时减少额外的计算和内存成本。这种优化在处理大规模数据时尤其有效,可以显著提高排序速度。