【147-Insertion Sort List(链表插入排序)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题 Sort a linked list using insertion sort.
题目大意 对一个单链表表进行插入排序
解题思路 使用一个指针p指向未排好序的链表的第一个结点,在排序好的部分中找到找第一个大于等于q的前驱结点,将p对应的结点插入到正确位...
分类:
编程语言 时间:
2015-08-20 06:49:36
阅读次数:
182
直接插入排序:
算法步骤:
1)将第一待排序列第一个元素看作第一个有序序列,吧第二个元素到最后一个元素当成是未排序序列.
2)从头到位一次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置.(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面)
算法示意图:
算法实现:
public class InsertSort {
voi...
分类:
编程语言 时间:
2015-08-17 17:21:11
阅读次数:
136
由于插入排序的基本思想是在一个有序序列中插入一个新的记录,则可以利用"折半查找"查询插入位置,由此得到的插入排序算法为"折半插入排序"。算法如下: void BInsertSort (SqList &L)
{
// 对顺序表L作折半插入排序
for ( i=2; i<length; ++i )
{
r[0] = r[i];...
分类:
编程语言 时间:
2015-08-17 14:07:35
阅读次数:
117
冒泡排序说明:此文中的排序算法数组,第一个数(即0下标)没有作为数据处理(i从1开始),arr[0]用作哨岗,部分排序算法(如插入排序)比较时需要用到排序思想:1.假设共有N个数,从头开始,比较相邻的两个数,如果前一个数比后一个数大,则交换位置,否则不变,继续比较。2.按照这样的方法对数组从0到N-...
分类:
编程语言 时间:
2015-08-14 15:10:32
阅读次数:
145
前面两篇介绍了两种插入排序算法:直接插入排序和希尔排序。这篇介绍选择排序的一种:直接选择排序。从名字就可以看出直接选择排序与直接插入排序很相似,两者相同点在与都是将待排序序列分成有序区和无序区两部分,不同之处在于直接插入排序是从无序区选出一个插入到有序区合适的位置,而直接选择排序是从无序区选出最小的一个插入到有序区尾部,使得有序区保持有序。
基本思想:
一组待排序的数据,首先将其划分成两部分,一...
分类:
编程语言 时间:
2015-08-13 22:28:53
阅读次数:
203
题目如下:
According to Wikipedia:
Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from ...
分类:
其他好文 时间:
2015-08-13 14:31:46
阅读次数:
119
希尔排序介绍希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成若干个组...
分类:
编程语言 时间:
2015-08-11 12:01:22
阅读次数:
144
#include<stdlib.h>
#include"time.h"
intCreate(intarr[],intn,intmin,intmax)
{
inti,j,flag;
srand(time(NULL));
if((max-min+1)<n)return0;//最大数与最小数之差小于产生数组的数量,生成数据不成功
for(i=0;i<n;i++)
{
do
{
arr[i]=(max-min+1)*rand()/(RAND_..
分类:
编程语言 时间:
2015-08-09 19:09:11
阅读次数:
140
/// /// 插入排序 /// /// static void insertion_sort(int[] unsorted) { for (int i = 1; i unsorted[i]) ...
分类:
编程语言 时间:
2015-08-07 01:49:45
阅读次数:
131