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. Android Design TextinputLayout

    使用该布局 需要在build.gradle中的dependencies块中添加两个依赖来向下兼容 dependencies { compile fileTree(dir: 'libs', includ ...

  2. @angular/cli项目构建--路由2

    app.module.ts update const routes: Routes = [ {path: '', redirectTo: '/home', pathMatch: 'full'}, {p ...

  3. Effective Python之编写高质量Python代码的59个有效方法

                                                         这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码 ...

  4. python爬虫框架Pyspider初次接触

    pyspider网站地址:http://docs.pyspider.org/en/latest/.文档比较好,安装起来也非常方便.既然是基于python的框架,那么首先得安装python.微软出的一款 ...

  5. 洛谷 P1854 花店橱窗布置

    题目描述 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号,V是花瓶的数目.花束可以移动,并且每束花用1到F的整数标识 ...

  6. 「新手向」koa2从起步到填坑

    前传 出于兴趣最近开始研究koa2,由于之前有过一些express经验,以为koa还是很好上手的,但是用起来发现还是有些地方容易懵逼,因此整理此文,希望能够帮助到一些新人. 如果你不懂javascri ...

  7. 仿百度下拉关键词,和关键词的小demo

    自己做项目时用到的仿百度下拉关键词 代码: $(function(){ var oTxt = document.getElementById('search_text'); oTxt.onkeyup ...

  8. bzoj 4300 绝世好题——DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4300 考虑 dp[ i ] 能从哪些 j 转移过来,就是那些 a[ j ] & a[ ...

  9. (转)heX——基于 HTML5 和 Node.JS 开发桌面应用

    本文转载自:http://techblog.youdao.com/?p=685 简介:heX,一个允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案.是你开发 ...

  10. linux中普通用户修改密码出现(passwd:Authentication token manipulation error)

    如果在linux中,不管是root用户还是普通用户登录后,修改自己的密码,出现---passwd:Authentication token manipulation error---错误的解决办法: ...