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. python 百题计划

    一.基础篇 想要像类似执行shell脚本一样执行Python脚本,需要在py文件开头加上什么?KEY:#!/usr/bin/env python Python解释器在加载 .py 文件中的代码时,会对 ...

  2. L110 promise

    We assure you that such things will not happen again in our future deliveries. We'd like to avail ou ...

  3. skynet源码阅读<5>--协程调度模型

    注:为方便理解,本文贴出的代码部分经过了缩减或展开,与实际skynet代码可能会有所出入.    作为一个skynet actor,在启动脚本被加载的过程中,总是要调用skynet.start和sky ...

  4. javascript网页复制功能-复制到粘贴板-兼容多数浏览器(不使用flash)

    使用方法:clipBordCopy("hello Copy");//执行后复制hello Copy到粘贴板 通过 var result = clipBordCopy("h ...

  5. mysql 权限的相应修改

    mysql 权限的相应修改 UPDATE user SET Password = PASSWORD('bbbb') WHERE user = 'root';flush privileges; upda ...

  6. bzoj4513 储能表

    求 $\sum\limits_{i=0}^{n-1} \sum\limits_{j=0}^{m-1} max((x \space xor \space j) - k,0)$ ,膜 $p$ $n,m \ ...

  7. HIVE-利用ow_number() OVER(PARTITION BY)函数介绍求TOP-K

    http://blog.csdn.net/631799/article/details/7419797 第一句话: select row_number() over (partition by mon ...

  8. Asp.net工作流workflow实战之给书签命名(四)

    之前我们的书签名字是通过手动录入的方式,在实际开发中要在流程设计的时候定义好: namespace EazyBPMS.WorkFlow { public sealed class SetStepAct ...

  9. navicat链接远程数据库

    1.之前使用的是常规的连接方式 学习源头: https://jingyan.baidu.com/article/0aa2237573c1e688cc0d6427.html 这里的ip地址是服务器的ip ...

  10. 蓝桥杯 历届试题 PREV-33 兰顿蚂蚁

    历届试题 兰顿蚂蚁   时间限制:1.0s   内存限制:256.0MB 问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中 ...