简单排序

  • 冒泡排序 选择排序 插入排序

    时间复杂度 O(n^2)

  • 冒泡排序è基本不用  过于简单比较次数(见下) 与 交换次数(平均为比较次数的一半) 均正比于N^2

  • 选择排序è快于冒泡 交换时间级别大于比较时间级别选择该排序

    比较次数(见下) 正比于N^2 交换次数N

  • 插入排序 VS表插入排序

效率比较

插入排序>(略快于)选择排序>冒泡排序


插入排序


表插入排序


原理


简单排序之一


利用有序链表插入效率的比较为O(N)的特点


比较次数MAX


(N^2-N)/2


N


比较次数AVG


(N^2-N)/4


N/2


复制次数


基本等于比较次数


复制次数 2N (1次从数组到链表 1次从链表到数组)


优点


如果数据基本有序 时间为 O(N)

因为while循环条件为假


缺点


开辟差不多两倍的空间(数组和链表必须同时存在)

1  有现成的有序链表类可用

2  表插入排序对不太大的数组排序是比较便利的

时间: 2024-10-06 02:18:14

简单排序的相关文章

JavaScript 实现页面元素(ul-li)的简单排序

JavaScript 实现页面元素(ul-li)的简单排序 html页面: <input type="button" value="show" onclick="show()" /> <ul id="ul1"> <li>4</li> <li>3</li> <li>2</li> <li>1</li> </

排序算法之简单排序算法

一.前言 其实排序对于前端工程师来说没有后端那么重要,不过理解排序的原理还是比较有用的.例如有些应用数据比较少量的就不需要用后台来排序,如果用php后端脚本等排序会增加后台的开销.放在前端岂不是更好,当然我们有一个前端的排序神器sort.当然也做了很多得优化,不过用sort排序还需要注意一点,sort默认不传参数时候的排序是按照字母顺序对数组中的元素进行排序,其实就是按照字符编码的顺序进行排序.        今天主要复习一下简单得排序,分别为冒泡排序.插入排序.选择排序,冒泡目前是我认为最简单

Java数据结构和算法之数组与简单排序

一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信息分组的便利方法. 一维数组 一维数组(one‐dimensional array )实质上是相同类型变量列表.要创建一个数组,你必须首先定义数组变量所需的类型.通用的一维数组的声明格式是: type var‐name[ ]; 获得一个数组需要2步: 第一步,你必须定义变量所需的类型. 第二步,你必

UVA - 10905 - Children&#39;s Game (简单排序)

UVA - 10905 Children's Game Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description 4thIIUCInter-University Programming Contest, 2005 A Children's Game Input: standard input Output: standard output Problems

简单排序poj2388

#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h> using namespace std;int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;}int main(){ int n; int a[10001]; while(scanf("%d",&n)!=

Java中的几种排序算法:冒泡排序,插入排序,二分法排序,简单排序,快速排序

冒泡排序: int[] hehe={4,7,2,5,6,9,0}; for(int i=0;i<hehe.length;i++){ for(int j=i+1;j<hehe.length;j++){ if(hehe[i]>hehe[j]){ int temp=hehe[i]; hehe[i]=hehe[j]; hehe[j]=temp; } } } 插入排序 int[] a={13,7,8,9,10,1,2,32}; int i,j,t,h; for (i=1;i<a.length

排序算法之简单排序(冒泡、选择、插入)

1.基本概念 内部排序和外部排序 根据排序过程中,待排序的数据是否全部被放在内存中,分为两大类: 内部排序:指的是待排序的数据存放在计算机内存中进行的排序过程: 外部排序:指的是排序中要对外存储器进行访问的排序过程. 内部排序是排序的基础,在内部排序中,根据排序过程中所依据的原则可以将它们分为5类:插入排序.交换排序.选择排序.归并排序:根据排序过程的时间复杂度来分,可以分为简单排序.先进排序.冒泡排序.简单选择排序.直接插入排序就是简单排序算法. 评价排序算法优劣的标准主要是两条:一是算法的运

Java数据结构和算法(三)——简单排序

单单有数据还不够,对于数据的展现,经常要按照一定的顺序进行排列,越高要求的排序越复杂,这篇只介绍三种大小的简单排序. 1)冒泡排序 模拟:有数组,1,4,2,5,7,3. (1)首先从1开始冒泡,1比4小,不冒,4大于2,冒上去,与2交换位置,4比5小,不冒,7比3大,冒,结果:1,2,4,5,3,7 (2)接下来从2开始,因为第一个元素冒过了,重复(1),结果:1,2,4,3,5,7 (3)从第三位4开始,结果1,2,3,4,5,7 (4)虽然看起来已经排好序,但是还是要继续冒,接下来就是从第

三种简单排序(之一)——(冒泡排序)

1.简介:     在学习技能的过程中,没有哪一种技术是最好的!在不同的情况下,不同的技术会有不同优势! 冒泡排序的基本思想是:每次比较两个相邻元素,如果它们的顺序错误就把它们交换位置: 下面通过图简单来看看“冒泡排序” 所谓冒泡排序就是这样,小的数往上浮,大的数往下沉! 2.冒泡排序: 代码: 1 static void Main(string[] args) 2 { 3 int[] arr = { 1, 5, 2, 7, 3 }; 4 foreach (int item in bubble(