C语言-郝斌笔记-006排序及查找
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排序及查找的更多相关文章
- C语言-郝斌笔记-007是否为素数
是否为素数 # include <stdio.h> bool IsPrime(int val) { int i; ; i<val; ++i) { ) break; } if (i = ...
- C语言-郝斌笔记-005菲波拉契序列
菲波拉契序列 /* 菲波拉契序列 1 2 3 5 8 13 21 34 */ # include <stdio.h> int main(void) { int n; int f1, f2, ...
- C语言-郝斌笔记-004判断是否为回文数
判断是否为回文数 # include <stdio.h> int main(void) { int val; //存放待判断的数字 int m; ; printf("请输入您需要 ...
- C语言-郝斌笔记-003数据类型
基本类型数据 整数 整型 —— int --4字节 短整型 —— short int ——2字节 长整型 —— long int ——8字节 浮点数[实 ...
- C语言-郝斌笔记-002病毒程序示范
病毒程序示范 /* 龌龊的程序! */ # include <stdio.h> # include <windows.h> # include <malloc.h> ...
- C语言-郝斌笔记-001求二次方程的根
求二次方程的根 #include <stdio.h > #include<math.h> int main(void) { //把三个系数保存到计算机中 ; //=不表示相等, ...
- 【C语言编程入门笔记】排序算法之快速排序,一文轻松掌握快排!
排序算法一直是c语言重点,各个算法适应不用的环境,同时,在面试时,排序算法也是经常被问到的.今天我们介绍下快速排序,简称就是快排. 1.快速排序思想: 快排使用 分治法 (Divide and con ...
- 郝斌老师C语言学习笔记(一)
在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以“85”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常 ...
- [C]郝斌C语言课程大纲及笔记
本笔记整理于郝斌老师C语言课程,做学习参考之用. 1.[编程笔记]第一章 C语言概述 2.[编程笔记]第二章 C语言预备知识 3.[编程笔记]第三章 运算符与表达式 4.[编程笔记]第四章 流程控制 ...
随机推荐
- xdebug的安装测试
1.下载 php -version PHP 7.2.0 (cli) (built: Dec 7 2017 23:07:46) ( NTS DEBUG ) 如果PHP版本是7.2以上的必须要下载Xdeb ...
- python any函数
pyhton的any() 函数: 判断给定的可迭代参数 iterable : 全部为 False,返回 False; 至少有一个为 True,则返回 True. 元素除了是 0.空.FALSE 外都算 ...
- 4.MySQL优化---多表查询优化
整理自互联网 一.多表查询连接的选择: 相信这内连接,左连接什么的大家都比较熟悉了,当然还有左外连接什么的,基本用不上我就不贴出来了.这图只是让大家回忆一下,各种连接查询. 然后要告诉大家的是,需要 ...
- python之ConfigParser的使用。
一.ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.section 下面为类似于key-value 的配置 ...
- bzoj 3681 Arietta
一棵有根树,每个点有一个音高,有 $m$ 中弹奏方法,每种方法可以弹奏 $d$ 子树中音高在 $[l,r]$ 间的音符,每种方法最多弹 $t$ 次 求最多能弹出多少个音符 $n \leq 10000$ ...
- 安装Windows系统指南
安装系统指南 WIN10PE内核与WIN8PE内核区别: Win10PE内核支持NVME(M.2)新硬盘,WIN8PE不支持NVME. 但是WIN8PE对老机器的适配更好一些,其他功能均一致. 多一个 ...
- Linux命令学习(17):ifconfig命令
版权声明更新:2017-05-22博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 我们知道,在windows中,除了在图形界 ...
- [独孤九剑]Oracle知识点梳理(九)数据库常用对象之package
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- JDK 8 - java.util.HashMap 实现机制分析
官方文档对 HashMap 的定义: public class HashMap<K,V> extends AbstractMap<K,V> implements Map< ...
- java继承初级
总结:重写方法,方法体内容不同. 还有子类都不能加public.它表示公共,一个程序只能有一个公共类 package com.sa; public class Ac { public void rea ...