//这里说的是一个指针,指向算法的应用

//直接排序

//每个排序算法是指针指向的每个元件的特性的方便的交流

//这里的基本思想是,处理的记录的排序n - 1第二选择。

//第i次操作选择i大(小)的记录放在第i个(或者n - i - 1 个)位置上。

//即每次都将一个记录放在它终于的位置上,

//这就是所谓的“各回各家”

#include <iostream>

#include <cstdio>

using namespace std;

void SelectSort(int *Array, int n)

{

int i, j, m, a;

//从无序的序列中找到最小值的位置

for(i = 0; i < n - 1; i++)

{

m = 1;

for(j = i + 1; j < n; ++j)

{

if(*(Array + j) < *(Array + m))

m = j;

}

/*

*记录当前最小值的位置

* */





if(m != 1)

{

a = *(Array + m);

*(Array + m) = *(Array + 1);

*(Array + i) = a;

}

}





}













int main()

{

int i  = 0;

int Array[10] = {12, 2, 37, 67, 90, 1, 78, 67, 2, 32};

printf("待排序的数组为:\n");

for(i = 0; i < 10; ++i)

{

printf("%d\t", *(Array + i));

}

SelectSort(Array, 10);

printf("\n直接排序后的结果为:\n");

for(int j = 0; j <10; ++j)

{

printf("%d ", *(Array + j));

}

printf("\n");

return 0;

}





//查找,当中涉及指针的偏移

//查找分为顺序查找

//折半查找

//儿茶查找

//分块查找

//这里举的样例是二分查找

#include <iostream>

#include <cstdio>

using namespace std;

int BinarySearch(int * Array, int n, int x)

{

int low, high, middle;

low = 0, high = n - 1;

while(low <= high)

{

middle = (low + high)/2;

if(*(Array + middle) == x)

return 1;

else

{

if(*(Array + middle) >= x)

{

high = middle - 1;

}

if(*(Array + middle) <=x)

{

low = middle + 1;

}

}



}





}













int main()

{

int Array[10] = {2, 4, 5, 13, 15, 20, 30, 35, 40, 50};

int x1, x2;

x1 = 20;

x2 = 33;

if(BinarySearch(Array, 10, x1))

printf("已经找到%d\n", x1);

else

printf("未找到%d\n", x1);

if(BinarySearch(Array, 10, x2))

printf("已经找到%d\n", x2);

else

printf("未找到%d\n", x2);

return 0;

}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

最新文章

  1. Ubuntu 树莓派2b交叉编译环境
  2. Android使用SAX解析XML(3)
  3. MySQL外键使用需要注意的几点
  4. sql种类
  5. win7 快捷键
  6. WordPress 去除图片img标签的高度与宽度
  7. Hold住:坚持的智慧
  8. cookie有效期到了后,是由浏览器还是由系统还删除的
  9. 常用监控SQL
  10. 整数v,从高位到低位,取c位数,得到最大数 (其中:v&gt;=10^c)
  11. textarea 输入框限制字数
  12. 【剑指Offer学习】【面试题36:数组中的逆序对】
  13. Python Linear algebra
  14. pyhton:图像旋转
  15. C#程序代码中常用的快捷键
  16. Python3正则表达式(4)
  17. 关于这次安装Oracle
  18. 00010 - cut选取命令详解
  19. redis之事务
  20. SQL基础日期函数

热门文章

  1. mac已安装xctool而简单的执行xctool打包
  2. ACM-DP最大连续子——hdu1231
  3. MVC的验证 jquery.validate.unobtrusive
  4. 移动端 rem字体的使用demo
  5. Web API之消息处理管道
  6. 一键安装 gitlab7 on rhel6.4 并设置邮件发送
  7. SVN在branch兼并和游戏patch(1)
  8. L轻松学习inux教程5 知识与学习bash
  9. React Native开发的通讯录应用
  10. 删RAC中间ASM和LISTENER 资源的正确方法