上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 28 下一页
摘要: #includeconst int N = 100;int a[N];/**算法导论第一部分,基础知识。P17 插入排序,复杂度O(n^2)*/void insertion_sort( int *a,int n){ for(int i = 1;i =0&&a[j]>key) { a[j+1]=a[j]; j--; } a[j+1] = key; }}int main(){ int n; while(scanf("%d",&n)!=EOF) { for(int ... 阅读全文
posted @ 2013-12-31 12:29 博园少主 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 概述内排序顾名思义待排序元素总数相对与内存而言较小,整个排序过程可以在内存中进行。反之,如果待排序元素总数较多,不能全部放入内存,排序过程需要访问外存,称之为外排序。内排序算法有序多下面是较常见的几种排序算法:按照时间复杂度来划分的话,主要有两种:非线性时间复杂度,下面列举的排序算法的是基于关键字比较和移动两种操作实现的称为“比较排序”,《算法导论》证明过对于任何比较排序在最坏情况下的要Ω(nlgn)次比较来进行排序。1、简单选择排序算法2、直接插入排序算法3、冒泡排序4、快速排序5、两路合并排序6、堆排序线性时间排序,下面的三种算法的用非比较的一些操作来确定顺序。1、计数排序2、基数排序3、 阅读全文
posted @ 2013-12-31 11:47 博园少主 阅读(382) 评论(0) 推荐(0) 编辑
摘要: //快速排序:#include #define MAX 500000int s[MAX];void Q_Sort(int start,int end){ int i,j,t; if ( start >= end ) return ; t = s[start]; i = start; j = end; while ( i = t && i #define MAX 500000int a[MAX];int b[MAX];void Merge(int left,int mid,int right){ int i,j,k; i = left; j ... 阅读全文
posted @ 2013-12-31 11:19 博园少主 阅读(195) 评论(0) 推荐(0) 编辑
摘要: [实验内容]1、直接插入排序2、快速排序3、堆排序(要求了解原理) 【实验测试数据】 输入数据:{49,38,65,97,76,13,27,49}#include #define M 8typedef struct{ int key; int other_data;}RecordType;void InsSort(RecordType r[], int length);void QKSort(RecordType r[],int low, int high );int QKPass(RecordType r[],int left,int right);void In... 阅读全文
posted @ 2013-12-31 11:04 博园少主 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 1. 相关知识介绍1.1. 稳定排序和非稳定排序简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。反之,就是非稳定的。 比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5,则我们说这种排序是稳定的,因为a2排序前在a4的前面,排序后它还是在a4的前面。假如变成a1,a4,a2,a3,a5就不是稳定的了。1.2. 内排序和外排序在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序; 在排序过程中,只有部分数... 阅读全文
posted @ 2013-12-31 10:49 博园少主 阅读(157) 评论(0) 推荐(0) 编辑
摘要: #include "windows.h"#include "stdio.h"#include "stdlib.h"#include "conio.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -1#define MAX_NAME_LEN 20 // 姓名最大长度#define MAX_BK... 阅读全文
posted @ 2013-12-25 20:06 博园少主 阅读(474) 评论(0) 推荐(0) 编辑
摘要: //-------------五种排序算法演示 #include "stdio.h" #include "stdlib.h" #include "math.h" #include "dos.h" #define Max 100 typedef int sqlist[Max+1]; void insertsort(sqlist a,int n) { int i,j; for(i=2;i0) { for(i=gap+1;i0) if(r[j]>r[j+gap]) { x=r[j]; r[j]=r[j+gap];. 阅读全文
posted @ 2013-12-24 19:55 博园少主 阅读(227) 评论(0) 推荐(0) 编辑
摘要: #include int main ( ){ int a[10]={ 0,4,5,6,13,27,50,90,100,999} ; int low ,high,mid, x ; printf("\n 输入待查的元素:"); scanf("%d",&x); low=0 ; high=9 ; while(lowhigh) printf("%d不存在\n",x) ;} 阅读全文
posted @ 2013-12-23 23:16 博园少主 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 顺序查找:在一个已知无序队列中找出与给定关键字相同的数的具体位置。原理是让关键字与队列中的数从第一个开始逐个比较,直到找出与给定关键字相同的数为止。复杂度为o(n).二分查找又称折半查找,它是一种效率较高的查找方法。 【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。 【优缺点】折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 【算法思想】首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果... 阅读全文
posted @ 2013-12-23 23:14 博园少主 阅读(382) 评论(0) 推荐(0) 编辑
摘要: #includeint fun(int a[],int n,int x){ int i; for(i=0;i main(){ int a[10]={1,2,3,4,5,6,7,8,9,10}; int i,x,y; printf("输入你要查找的数:\n"); scanf("%d",&x); y=0; //标记是否已找到,y=1表是找到了,y=0表示没找到 for(i=0;i<10;i++) //循环,把x和数组中的元素一个个比较 { if(x==a[i]) //如果x=a[i]说明已经找到 ... 阅读全文
posted @ 2013-12-23 23:11 博园少主 阅读(151) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 28 下一页