C/C++算法提高
Storyteller-LS
希望五年以后我还从事这个行业
展开
-
折半查找(又称二分查找)
思路:将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果x< a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右 半部继续搜索x。 1.必须采用顺序存储结构 2.必须按关键字大小有序排列,即数组有序。#include <stdio.h>int ma原创 2017-04-07 23:44:07 · 322 阅读 · 0 评论 -
快速排序
思路:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。#include <stdio.h>int division(int a[] ,int left,int right);void quickSort(int a[],int left,int原创 2017-04-07 23:56:20 · 206 阅读 · 0 评论 -
直接插入排序
思路:每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。#include <stdio.h>int main(){ int a[10]={25,14,24,65,56,78,72,96,87,55}; int temp,j; for(int i=1;i<10;i++) //从原创 2017-04-08 00:21:49 · 204 阅读 · 0 评论 -
冒泡排序
思路:两两比较,大数后沉,需要进行n-1趟排序。每趟排序要进行n-i次关键字的比较#include <stdio.h>#include <math.h>int main(){ int a[]={23,56,88,45,72,63}; int t; printf("数组元素个数:%d\n",sizeof(a)/sizeof(a[0])); int length = s原创 2017-04-08 00:32:56 · 203 阅读 · 0 评论 -
遍历二叉树
C++版思路:将每一个节点都看成一棵树,然后做两件事 A:查看此树是否为空,为空则将值赋给此节点,将左右指针赋空值 B:此树不为空,则判断左孩子是否为空调用A步骤,右孩子同理#include <iostream>#include <cstdio>using namespace std;//树结构struct BiTree{ int v; BiTree *lchild;原创 2017-04-19 10:41:09 · 185 阅读 · 0 评论