算法
Honeymao
这个作者很懒,什么都没留下…
展开
-
堆排序
大根堆定义为,每一个父亲节点都大于等于左右两个孩子节点(小根堆同理)。并且,大根堆一定是一棵完全二叉树。思想为从最后一个家庭开始(最后一个有孩子的父亲节点),将这个家庭调整为大根堆,然后父亲节点前移,将下一个家庭调整为大根堆……以此类推,最后,根节点就是最大的元素,然后将根节点与最后一个叶子节点交换,砍掉最后一个叶子节点(意思就是下一轮的排序它不参与)。#include <stdio.h>void原创 2017-08-27 16:50:26 · 444 阅读 · 0 评论 -
归并排序
#include <stdio.h>void Merge(int a[],int start,int end) { int mid=(start+end)/2; int b[end-start]; int i,j,k; i=start; j=mid; k=0; while(i<mid||j<end) { //1、i没完原创 2017-08-27 12:52:37 · 370 阅读 · 0 评论 -
插入排序
基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。设数组为a[0…n-1]。 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=1 将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。 i++并重复第二步直到i==n-1。排序完成。 void Insertsort1(int a[], int n)原创 2017-08-27 14:33:49 · 308 阅读 · 0 评论