程序片段(01):全排列.c

内容概要:全排列密码库

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. //01.对于字符类型的数组进行初始化特点:
  5. // 如果赋予的数据是字符串,则可以省略掉大括号
  6. //注:性能+最优
  7. int main01(void)
  8. {
  9. char arr[10] = "11111";
  10. for (char * p = arr; 0 != *p; ++p)
  11. {
  12. putchar(*p);
  13. }
  14. system("pause");
  15. }
  16. //02.凡是涉及到跨函数修改数据:
  17. // 注:必须传递变量的所属地址!
  18. void swop(char * pa, char * pb)
  19. {
  20. char temp = *pa;
  21. *pa = *pb;
  22. *pb = temp;
  23. }
  24. //03.全局变量的使用:
  25. // 导致:每次操作的都是同一个变量!
  26. int ipos = 0;
  27. char srcStr[5] = "1234";
  28. void allArange(char * pBegin)
  29. {
  30. if ('\0' == *pBegin)
  31. {
  32. printf("第%2d次排列,排列结果为%4s! \n", ++ipos, srcStr);
  33. char resPath[100] = { 0 };
  34. sprintf(resPath, "echo %s >> E:\\Resource\\TestData\\Test\\allArange.txt", srcStr);
  35. system(resPath);
  36. }
  37. for (char * p = pBegin; '\0' != *p; ++p)
  38. {
  39. swop(pBegin, p);
  40. allArange(pBegin + 1);
  41. swop(p, pBegin);
  42. }
  43. }
  44. int main(void)
  45. {
  46. allArange(srcStr);
  47. system("pause");
  48. }

程序片段(02):快速排序法

内容概要:快速排序法

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void swop(int * pa, int * pb)
  4. {
  5. int temp = *pa;
  6. *pa = *pb;
  7. *pb = temp;
  8. }
  9. void show(int * arr, int n)
  10. {
  11. for (int i = 0; i < n; ++i)
  12. {
  13. printf("%3d", arr[i]);
  14. }
  15. printf("\n");
  16. }
  17. //01.快速排序:
  18. // 用途:单线程整体数据排序最快!
  19. void quick(int * arr, int leftIndex, int rightIndex)
  20. {
  21. int i = leftIndex;
  22. int j = rightIndex + 1;
  23. if (i < j)//保证索引正确!+排除第一次异常!
  24. {
  25. do
  26. {
  27. do
  28. {
  29. ++i;//跳过待中立的数组元素
  30. } while (i <= rightIndex && arr[i] <= arr[leftIndex]);//找到从左边开始的第一个小于或等于数组首元素的的数组元素
  31. do
  32. {
  33. --j;//进入到真实的数组元素
  34. } while (j > leftIndex && arr[j] >= arr[leftIndex]);//找到从右边开始的第一个大于或等于首元素的数组元素
  35. if (i < j)
  36. {
  37. swop(&arr[i], &arr[j]);//交换(最靠左边的第一个小于值和最靠右边的第一个的大于值)!
  38. }
  39. } while (i < j);//一轮交换完毕!
  40. swop(&arr[leftIndex], &arr[j]);
  41. quick(arr, leftIndex, j - 1);
  42. quick(arr, j + 1, rightIndex);
  43. }
  44. }
  45. int main01(void)
  46. {
  47. int arr[10] = { 10, 9, 20, 19, 13, 8, 9, 22, 0, 91 };
  48. printf("数组原始状态: \n");
  49. show(arr, 10);
  50. quick(arr, 0, 9);
  51. printf("数组排序之后: \n");
  52. show(arr, 10);
  53. system("pause");
  54. }

20160213.CCPP体系详解(0023天)的更多相关文章

  1. 20160129.CCPP体系详解(0008天)

    程序片段(01):函数.c+call.c+测试.cpp 内容概要:函数 ///函数.c #include <stdio.h> #include <stdlib.h> //01. ...

  2. 20160226.CCPP体系详解(0036天)

    程序片段(01):01.多线程.c+02.多线程操作.c 内容概要:多线程 ///01.多线程.c #include <stdio.h> #include <stdlib.h> ...

  3. 20160208.CCPP体系详解(0018天)

    程序片段(01):main.c 内容概要:PointWithOutInit #include <stdio.h> #include <stdlib.h> //01.野指针详解: ...

  4. 20160206.CCPP体系详解(0016天)

    代码片段(01):.指针.c+02.间接赋值.c 内容概要:内存 ///01.指针 #include <stdio.h> #include <stdlib.h> //01.取地 ...

  5. 20160205.CCPP体系详解(0015天)

    程序片段(01):01.杨辉三角.c 内容概要:杨辉三角 #include <stdio.h> #include <stdlib.h> #define N 10 //01.杨辉 ...

  6. 20160204.CCPP体系详解(0014天)

    程序片段(01):define.h+data.h&data.c+control.h&control.c+view.h&view.c+AI.h&AI.c+main.c 内 ...

  7. 20160203.CCPP体系详解(0013天)

    程序片段(01):数组.c+02.数组初始化语法.c 内容概要:数组 ///01.数组.c #include <stdio.h> #include <stdlib.h> //0 ...

  8. 20160128.CCPP体系详解(0007天)

    以下内容有所摘取,进行了某些整理和补充 论浮点数的存储原理:float浮点数与double浮点数的二进制存储原理–>阶码 浮点数转二进制 1.整数int类型和浮点数float类型都是占用4个字节 ...

  9. 20160127.CCPP体系详解(0006天)

    程序片段(01):msg.c 内容概要:线程概念 #include <stdio.h> #include <stdlib.h> #include <Windows.h&g ...

随机推荐

  1. markdown常用语法简记

    一级标题 二级标题 三级标题 ..... 无序列表 First Second Third 有序列表 第一条 第二条 第三条 链接 我的github主页 锚点 无序列表 代码块 var vm = new ...

  2. 基于 MySQL 的数据库实践(基本查询)

    首先根据准备工作中的操作导入大学模式,打开数据库连接后进入到 MySQL 的交互界面,再使用命令 use db-book; 切换到 db-book 数据库. 单关系查询 SQL 查询的基本结构由三个子 ...

  3. U盘分区后合并

    1.首先把你的U盘插在电脑上,点击开始→所有程序→附件→命令提示符(前面这步骤也可以直接用Win+R组合键打开"运行",之后输入cmd也可打开命令提示符). 2.然后在命令提示窗口 ...

  4. 百度tn劫持解决办法

    最近用右键进行百度搜索的时候总是会跳转到 tn=99135173这类的小尾巴,使得搜索失败,十分恶心,这种广告劫持的手段十分高明隐蔽,很难发觉.开始以为是dns劫持或者是电脑中毒了,更换了几个dns, ...

  5. python九九乘法表

    j = 1 while j <= 9: i = 1 while i <= j: print("%d*%d=%d\t" % (i, j, i*j), end=" ...

  6. 解决IOS移动端 Safari流浪器 onclick无法触发的问题

    在移动端布局的时候, 在底部有一个button, 页面超过两屏, 是一个可滚动的的网页, 当运行在移动端Safari浏览器上的时候, 向下滑动页面, 浏览器的头部和尾部会自动隐藏, 这样可视区域就会变 ...

  7. Redis常用命令--Hashes

    Hash是由键值对组成的map.Hashes的底层是通过字典实现的.一个哈希表里面可以有多个哈希表节点.而每个哈希节点就保存了字典中的一个键值对. 字典是一种用于保存键和值对的抽象数据结构.字典里的每 ...

  8. ActiveMQ笔记:一个高稳定,可扩展的的部署方案

    本文介绍一个笔者在实际工作中的实施的基于ActiveMQ的一个高稳定,可扩展的异步消息系统. ActiveMQ是一个成熟的基于Java语言的开源消息系统,在实际应用中被大量使用.ActiveMQ在系统 ...

  9. [BZOJ]4200: [Noi2015]小园丁与老司机

    Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special Judge Description 小园丁 Mr. S 负责看管一片田野,田野可以看作一个二维 ...

  10. 【USACO07NOV】电话线Telephone Wire

    题目描述 电信公司要更换某个城市的网线.新网线架设在原有的 N(2 <= N <= 100,000)根电线杆上, 第 i 根电线杆的高度为 height_i 米(1 <= heigh ...