- 博客(9)
- 收藏
- 关注
原创 <菜鸟学算法-Dijkstra求最短路径>
#include#define INFINITE 10000int Graph[6][6]={ {0,2,4,0,0,0}, /*建立一个有向图,0表示不通,非零为权值*/ {0,0,5,6,9,0}, {0,0,0,0,7,0}, {0,0,0,0,2,3}, {0,0,0,0,0,4}, {0,0,0,0,0,0} };typedef struct vert
2014-05-22 20:04:33 410
原创 <菜鸟学算法-A排序(选择排序)>
/* ============================================================================ Name : choice_sort.c Author : braveboyny Version : Copyright : Your copyright notice Description
2014-05-21 19:53:08 618
原创 <菜鸟学算法-A排序(shell排序)>
/* ============================================================================ Name : shell_sort.c Author : braveboyny Version : Copyright : Your copyright notice Description
2014-05-21 19:50:58 420
原创 <菜鸟学算法-A排序(计数排序)>
计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。#include#define MAX_NUMBER 6int C[MAX_NUMBER];int counting_sort(int A[],int B[],int n){
2014-05-20 12:56:26 557
原创 <菜鸟学算法-A排序(分治的思想:堆排序)>
堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单。(1)用大根堆排序的基本思想① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区② 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n],且满足R[1..n-1]
2014-05-20 11:22:52 641
原创 <菜鸟学算法-A排序(分治的思想:快速排序)>
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
2014-05-20 11:19:29 669
原创 <菜鸟学算法-A排序(冒泡排序)>
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。#includevoid bubble_sort(int *a,int
2014-05-20 10:37:41 556
原创 <菜鸟学算法-A排序(分治的思想:归并排序)>
#include#include#define INFINITE 65535void merge(int array[],int low,int mid,int high){int n1,n2,i,j,k;n1=mid-low+1;n2=high-mid;int *La=(int *)malloc(sizeof(int)*(n1+1));//将数组分成左右2部分分治
2014-05-19 20:30:18 586
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人