![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
张志来
这个作者很懒,什么都没留下…
展开
-
两数交换_不用临时变量
方法1:交换a,b的值 (1)a=a+b; (2)b=a-b; (3)a=a-b; 思路:先将a,b相加得到和(出现第三个数),然后通过(2)式将a的值赋给b;b=(a+b)-b=a; 关键在于:到目前为止只出现三个数,一个是a,b的和,再是a,b的值,现在和(a)已经知道了b的值也知道了,所以求得第三个数轻而易举了。就是通过和减去b就得到了a,此时数据也就交换过来了。 我开始一直很迷原创 2013-03-08 15:01:46 · 751 阅读 · 0 评论 -
简单算法(直接插入排序)
题目:将数组a[0...n]用直接插入排序从小到大进行排序 直接插入排序就像是我们平时玩扑克一样,是摸牌到手里的一个过程,将牌插入到已经有序的合适位置。 假设待排序的记录存放在数组a中,初始时,i=0,a[0]自己是一个有序区,a[1...n]为无序区。然后从i=1开始排序,将a[i]插入到当前有序区a[1...i-1]中,最后,生成含n个记录的有序区。 c代码: void InsertS原创 2013-03-01 19:46:24 · 490 阅读 · 0 评论 -
模拟大整数的乘法
由于计算机的位数问题,所以很难处理大数的问题,我根据小学的乘法模拟了大数的乘法。 //大整数的乘法 ,模拟 #include"stdio.h" #include"string.h" int aa[100],bb[100],c[200],d[200]; //aa,bb代表字符串转换成整形数组,c数组用来存放每次相乘得到的一个数组 ,d数组用来将每项乘的数相加 int l原创 2013-04-15 15:03:04 · 607 阅读 · 0 评论 -
排序之插入排序
#include"stdio.h" int insertSort(int *a,int n) { int i,j; int temp; for(i=1;i { temp=a[i]; //保存无序区的第一个元素 j=i; while(a[j-1]>temp) //然后与有序区的最后一个元素比较原创 2013-06-17 15:30:09 · 455 阅读 · 0 评论 -
查找之二分查找
#include"stdio.h" int binSearch(int *a,int x,int low,int high) { int mid; int i,j; while(low { mid=(low+high)/2; if(a[mid]==x) {原创 2013-06-17 16:18:07 · 373 阅读 · 0 评论 -
排序之快速排序
算法思想:快速排序用到了分治法,所谓分治法就是分而治之,将一个大问题分解成若干个规模更小而且和原问题相似的子问题,递归的解这些子问题,各个击破。这也是战争中常用的一个战术。 具体步骤:(1)首先对一个无序的序列(拿数组a[ ]举例子)进行划分,取第一个数据a[0]作为基准pivot,以此基准将当前数组分为左右两个较小的子区间,左边的所有数据都小于基准pivot,右边的都大于pivot,注意两个原创 2013-06-18 16:14:55 · 464 阅读 · 0 评论 -
排序之冒泡排序
思路:冒泡排序,顾名思义,与冒泡有关。原理是根据轻气泡不能再重气泡之下,每次交换相邻的两个气泡,轻的交换到上面,一次遍历到最后。然后又从第一个元素开始,因为每经过一次排序,最后面有序区会多一个元素,所以j #include"stdio.h" void bubbleSort(int *a,int n) { int i,j,temp; for(i=0;i for(j=0;j if原创 2013-06-18 17:18:31 · 591 阅读 · 0 评论