zoukankan      html  css  js  c++  java
  • 20160213.CCPP体系详解(0023天)

    程序片段(01):全排列.c
    内容概要:全排列密码库

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    
    //01.对于字符类型的数组进行初始化特点:
    //  如果赋予的数据是字符串,则可以省略掉大括号
    //注:性能+最优
    int main01(void)
    {
        char arr[10] = "11111";
        for (char * p = arr; 0 != *p; ++p)
        {
            putchar(*p);
        }
    
        system("pause");
    }
    
    //02.凡是涉及到跨函数修改数据:
    //  注:必须传递变量的所属地址!
    void swop(char * pa, char * pb)
    {
        char temp = *pa;
        *pa = *pb;
        *pb = temp;
    }
    
    //03.全局变量的使用:
    //  导致:每次操作的都是同一个变量!
    int ipos = 0;
    char srcStr[5] = "1234";
    void allArange(char * pBegin)
    {
        if ('' == *pBegin)
        {
            printf("第%2d次排列,排列结果为%4s! 
    ", ++ipos, srcStr);
            char resPath[100] = { 0 };
            sprintf(resPath, "echo %s >> E:\Resource\TestData\Test\allArange.txt", srcStr);
            system(resPath);                                        
        }
        for (char * p = pBegin; '' != *p; ++p)
        {
            swop(pBegin, p);
            allArange(pBegin + 1);
            swop(p, pBegin);
        }
    }
    
    int main(void)
    {
        allArange(srcStr);
    
        system("pause");
    }

    程序片段(02):快速排序法
    内容概要:快速排序法

    #include <stdio.h>
    #include <stdlib.h>
    
    void swop(int * pa, int * pb)
    {
        int temp = *pa;
        *pa = *pb;
        *pb = temp;
    }
    
    void show(int * arr, int n)
    {
        for (int i = 0; i < n; ++i)
        {
            printf("%3d", arr[i]);
        }
        printf("
    ");
    }
    
    //01.快速排序:
    //  用途:单线程整体数据排序最快!
    void quick(int * arr, int leftIndex, int rightIndex)
    {
        int i = leftIndex;
        int j = rightIndex + 1;
        if (i < j)//保证索引正确!+排除第一次异常!
        {
            do
            {
                do
                {
                    ++i;//跳过待中立的数组元素
                } while (i <= rightIndex && arr[i] <= arr[leftIndex]);//找到从左边开始的第一个小于或等于数组首元素的的数组元素
                do
                {
                    --j;//进入到真实的数组元素
                } while (j > leftIndex && arr[j] >= arr[leftIndex]);//找到从右边开始的第一个大于或等于首元素的数组元素
                if (i < j)
                {
                    swop(&arr[i], &arr[j]);//交换(最靠左边的第一个小于值和最靠右边的第一个的大于值)!
                }
            } while (i < j);//一轮交换完毕!
            swop(&arr[leftIndex], &arr[j]);
            quick(arr, leftIndex, j - 1);
            quick(arr, j + 1, rightIndex);
        }
    }
    
    int main01(void)
    {
        int arr[10] = { 10, 9, 20, 19, 13, 8, 9, 22, 0, 91 };
        printf("数组原始状态: 
    ");
        show(arr, 10);
        quick(arr, 0, 9);
        printf("数组排序之后: 
    ");
        show(arr, 10);
    
        system("pause");
    }
  • 相关阅读:
    基于集合成工控机Ubuntu系统安装分区详解
    MySql连接问题
    再记一个提供webServices的网址
    J​a​y​r​o​c​k​.​J​s​o​n​读​取​j​s​o​n​数​据​(​n​e​t​)
    jquery mobile页面跳转后,必须重新刷新页面js方可有效
    删除数据库失败 因为当前数据库正在使用
    如何解决自定义404页面在IE等浏览器中无法显示问题
    HTTP协议详解(真的很经典)
    如何在XAMPP中设置多个网站
    apache php 多站点配置 重新整理
  • 原文地址:https://www.cnblogs.com/new0801/p/6176815.html
Copyright © 2011-2022 走看看