算法学习(一)(插入排序算法)

1.Maximum of array

说明:给定一组数组,进行排序,得到最大值和最小值。

1 input data:
2 1 3 5 7 9 11 ... 295 297 299 300 298 296 ... 12 10 8 6 4 2
3
4 answer:
5 300 1

利用插入排序算法进行排序:

 1 Array = [27871, -16173, -31511, -13095, 30159, -55191, -15285, 14394, 69666, -17640, -20828, 45000]
 2
 3 for j in range(1, len(Array)):
 4     key = Array[j]
 5     i = j - 1
 6     while i >=0 and Array[i] > key:
 7         Array[i+1] = Array[i]
 8         i = i - 1
 9     Array[i+1] = key
10
11 print(Array[len(Array)-1], end=‘ ‘)
12 print(Array[0], end=‘ ‘)   #输出:69666 -55191 
时间: 2024-10-12 16:30:50

算法学习(一)(插入排序算法)的相关文章

算法学习-1 插入排序

算法学习-1  插入排序 一.描述: 比如说我们玩扑克牌,规定每抓一张牌都要保证左边数字最小:抓第一张牌直接放手里就可以,抓第二张时如果比第一张小,则把它放到第一张牌的左边,假如每张抓来的牌放到手中都有固定位置,第一张为A[0],第二张为A[1],第三张为A[2],如果抓的第三张牌比第一张抓来的牌小,则将其放在A[0]处,对应的第二张牌就应该放在A[1],以此类推. 二.java代码实现 public class InsertSort { //排序后的数组 int sorted[]; publi

排序算法之 Java插入排序算法

package net.qh.test.sort; import java.util.ArrayList; import java.util.Calendar; import java.util.List; /** * Created by Administrator on 2016/03/01. */ public class Insert { public int[] sort(int[] arr){ if ( arr == null || arr.length <= 1 ){ return

算法学习笔记 KMP算法之 next 数组详解

最近回顾了下字符串匹配 KMP 算法,相对于朴素匹配算法,KMP算法核心改进就在于:待匹配串指针 i 不发生回溯,模式串指针 j 跳转到 next[j],即变为了 j = next[j]. 由此时间复杂度由朴素匹配的 O(m*n) 降到了 O(m+n), 其中模式串长度 m, 待匹配文本串长 n. 其中,比较难理解的地方就是 next 数组的求法.next 数组的含义:代表当前字符之前的字符串中,有多大长度的相同前缀后缀,也可看作有限状态自动机的状态,而且从自动机的角度反而更容易推导一些. "前

算法学习之排序算法:插入排序(直接插入排序、折半插入排序、2-路插入排序)

引言: 插入排序作为最简单易于理解的排序算法,基本实现比较简单.本文详细介绍直接插入排序,并给出实现,简单的介绍折半插入排序,并给出2-路插入排序和表插入排序两种插入排序,但并未给出具体实现. 一.直接插入排序 直接插入排序的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的.记录数增1的有序表. 算法描述: 步骤1.将待排序的一组记录中的第1个记录拿出来作为一组有序的记录(当然此时该组记录仅有1个记录). 步骤2.依次将待排序的一组记录中的记录拿出来插入到前面已排好序的记录中. 步

算法学习之排序算法(四)(希尔排序)

1.算法思想 先将整个待排元素序列分割成若干个子序列(由相隔某个"增量"的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序.因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高. 希尔(Shell)排序又称为缩小增量排序,它是一种插入排序.它是直接插入排序算法的一种威力加强版. 希尔排序的基本思想是 把记录按步长 gap 分组,对每组

排序算法之直接插入排序算法

基本思想 当插入第i(i≥1)个元素,前面的i-1个元素已经排好序.这时用第i个元素与前i-1个元素进行比较,找到插入位置即将第i个元素插入,原来位置上的元素向后顺移. 代码: //待排数据存储在数组a中,以及待排序列的左右边界 public void InsertSort(int[] a, int left, int right) { int temp;//临时变量 int i, j;//循环标记 for (i = left + 1; i <= right; i++) {//遍历待排序列 if

经典算法学习——直接插入排序

直接插入排序也是比较简单的排序,基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止.示例代码上传至https://github.com/chenyufeng1991/InsertSort.具体描述如下: 设数组为a[0...n-1], (1)初始时,a[0]自成为一个有序区,无序区为a[1...n-1]. 令i=1; (2)将a[i]并入到当前的有序区a[0...i-1]中形成a[0...i]的有序区间: (3)i++并重复(2)

算法学习:插入排序

插入排序适合用于规模比较小的数据量,且排序程度越高,效率也就越高:但遇到随机数构成的数据量,效率不高 简单代码如下 #include<stdio.h> void quicksort(int array[],int last)//升序排法,直接排法 { int i,j; int temp=0; for(i=1;i<last;i++)//从第二位开始排序,第一位默认不动 { temp=array[i]; j=i-1;//从要排序的后一位开始从末至最前端 //与已排序的数逐一比较,大于temp

算法学习之排序算法(二)(直接插入排序法)

1.插入法排序原理 直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录.按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到所有记录插入完毕为止. 设数组为a[0-n-1]. 1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1].令i=1 2. 将a[i]并入当前的有序区a[0-i-1]中形成a[0-i]的有序区间. 3. i++并反复第二步直到i==n-1.排序完毕. 2.代码实现(一) void Insertsort1(int a[], in

排序算法系列:插入排序算法

概述 直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的.记录数增1的有序表. – <大话数据结构> 版权说明 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 本文作者:Coding-Naga 发表日期: 2016年3月24日 原文链接:http://blog.csdn.net/lemon_tree12138/article/details/50968422 来源:CSDN 更多内容:分类 &