1.

 int partion(int *a, int low, int high)
{
int value = a[low];
int t; while (low < high)
{
while( high > low && a[high] >= value)
high--; //会跳到8行的while去执行,而不是转到10行去执行if语句
if(high != low)
{
t = a[low];
a[low] = a[high];
a[high] = t;
} while(low < high && a[low] <= value)
low++; if(low != high)
{
t = a[low];
a[low] = a[high];
a[high] = t;
}
}
return low;
}

2.

 /*
IBM <数据结构>上的介绍的比普通冒泡排序方法更快速的冒泡排序方法
*/ # include <c:\turboc2\-\ziliao\sort\hh.c> /* 该函数用的仍是冒泡排序,唯一不同的是我们加了个标志flag,一旦发现数组
元素没有相互交换,我们就可以提前推出循环,从而节省了时间! */
void sort(int *a, int n) /* 冒泡升序排序 */
{
int i, flag = , j;
int temp; i=;
while (flag)
{
flag = ;
for (j=; j<n-i; ++j)
{
if (a[j] > a[j+])
{
temp = a[j];
a[j] = a[j+];
continue; //会跳去执行++j
a[j+] = temp;
flag = ;
break; //会跳出for循环,转去执行32行的break语句
}
}
break; //2 会跳出while循环
++i;
}
} main()
{
clrscr(); printf("The array is:\n");
prin(a,);
sort(a,);
printf("The sorted array is:\n");
prin(a,); getch();
return ;
} /*
最后修改于07年正月初四晚上21:15 远通网吧! */

3.

 /*
2007-5-21
折半查找算法【递归法来实现】
*/ # include <stdio.h> /*
p指向数组首元素,n表示数足长度, val是待查找的元素,如果找到就返回该元素的下标,否则返回-1表
示没有找到 嘿嘿!
*/
int Find(int* p, int low, int high, int val)
{
int mid = (low + high) / ; if (low == high) /* 不会存在low > high 的情况! */
{
if (p[mid] == val)
{
return mid;
}
else
{
return -;
}
}
else
{
if (p[mid] < val)
{
Find(p,mid+,high,val);
}
else if (p[mid] > val)
{
Find(p,low,mid-,val);
}
else if (p[mid] == val) /* 最后这个else..if不要漏掉了,当然if (p[mid] == val)也可不写 */
{
return mid;
}
} printf("李四!\n");
} void Traverse(int* p, int n)
{
for (int i=; i<n; ++i)
printf("%-5d",p[i]); printf("\n");
} int main(void)
{
int a[] = {-,,,,,,,,,}; puts("原始数组的内容是:");
Traverse(a,); int k = Find(a,,,-);
if (- == k)
printf("没找到该元素!!!\n");
else
printf("该元素的具体位置是 %d \n",k); return ;
} /*
首先要明白,
折半查找的前提是数组中的元素已经排好序(无论升序降序都行) */

C语言-郝斌笔记-006排序及查找的更多相关文章

  1. C语言-郝斌笔记-007是否为素数

    是否为素数 # include <stdio.h> bool IsPrime(int val) { int i; ; i<val; ++i) { ) break; } if (i = ...

  2. C语言-郝斌笔记-005菲波拉契序列

    菲波拉契序列 /* 菲波拉契序列 1 2 3 5 8 13 21 34 */ # include <stdio.h> int main(void) { int n; int f1, f2, ...

  3. C语言-郝斌笔记-004判断是否为回文数

    判断是否为回文数 # include <stdio.h> int main(void) { int val; //存放待判断的数字 int m; ; printf("请输入您需要 ...

  4. C语言-郝斌笔记-003数据类型

    基本类型数据 整数 整型     —— int      --4字节  短整型   —— short int   ——2字节 长整型   —— long int    ——8字节      浮点数[实 ...

  5. C语言-郝斌笔记-002病毒程序示范

    病毒程序示范 /* 龌龊的程序! */ # include <stdio.h> # include <windows.h> # include <malloc.h> ...

  6. C语言-郝斌笔记-001求二次方程的根

    求二次方程的根 #include <stdio.h > #include<math.h> int main(void) { //把三个系数保存到计算机中 ; //=不表示相等, ...

  7. 【C语言编程入门笔记】排序算法之快速排序,一文轻松掌握快排!

    排序算法一直是c语言重点,各个算法适应不用的环境,同时,在面试时,排序算法也是经常被问到的.今天我们介绍下快速排序,简称就是快排. 1.快速排序思想: 快排使用 分治法 (Divide and con ...

  8. 郝斌老师C语言学习笔记(一)

    在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以“85”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常 ...

  9. [C]郝斌C语言课程大纲及笔记

    本笔记整理于郝斌老师C语言课程,做学习参考之用. 1.[编程笔记]第一章 C语言概述 2.[编程笔记]第二章 C语言预备知识 3.[编程笔记]第三章 运算符与表达式 4.[编程笔记]第四章 流程控制 ...

随机推荐

  1. dyci——IOS动态代码注入

    有时候用xib,更改了布局需要重新运行才可以看到效果,对于比较复杂的应用尤其浪费时间,下面介绍一个工具dyci-不需要重Run应用,也能看到效果 yci的网址:https://github.com/D ...

  2. 关于stl advance函数移动步数超过容器大小(越界)的研究

    今天使用advance遇到个问题,当advance移动步数超过容器大小时,表现的结果居然不一样. 再来看下stl源码 template<typename _BidirectionalIterat ...

  3. Express+Mongoose(MongoDB)+Vue2全栈微信商城项目全记录(二)

    用mogoose搭建restful测试接口 接着上一篇(Express+Mongoose(MongoDB)+Vue2全栈微信商城项目全记录(一))记录,今天单独搭建一个restful测试接口,和项目前 ...

  4. es6变量的解构赋值学习笔记

    1. 解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象.由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错. let { prop: x } = undefin ...

  5. LeetCode第二题:Add Two Numbers

    You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...

  6. vijos1906:联合权值

    描述 无向连通图 G 有 n 个点,n-1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 WiWi, 每条边的长度均为 1.图上两点(u, v)的距离定义为 u 点到 v 点的最短距离. ...

  7. SpringBoot之二:部署Spring Boot应用程序方式

    衡量多种部署方式 Spring Boot应用程序有多种构建和运行方式,其中一些你已经使用过了. 在IDE中运行应用程序(涉及Spring ToolSuite或IntelliJ IDEA). 使用Mav ...

  8. HDU 2544 最短路(邻接表+优先队列+dijstra优化模版)

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. docker 安装mysql 使用navicat访问 解决

    1. 下载Mysql的Docker镜像: 2. 运行镜像,设置root账号初始密码(123456),映射本地宿主机端口3306到Docker端口3306.测试过程没有挂载本地数据盘: 3. 查看已运行 ...

  10. CDM中遍历域及其约束条件、取值范围、引用它的项目

    Option   ExplicitValidationMode   =   TrueInteractiveMode =   im_BatchDim   mdl   '当前model'获取当前活动mod ...