20160213.CCPP体系详解(0023天)

Posted 尹成

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 ('\\0' == *pBegin)
    
        printf("第%2d次排列,排列结果为%4s! \\n", ++ipos, srcStr);
        char resPath[100] =  0 ;
        sprintf(resPath, "echo %s >> E:\\\\Resource\\\\TestData\\\\Test\\\\allArange.txt", srcStr);
        system(resPath);                                        
    
    for (char * p = pBegin; '\\0' != *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("\\n");


//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("数组原始状态: \\n");
    show(arr, 10);
    quick(arr, 0, 9);
    printf("数组排序之后: \\n");
    show(arr, 10);

    system("pause");

以上是关于20160213.CCPP体系详解(0023天)的主要内容,如果未能解决你的问题,请参考以下文章

20160206.CCPP体系详解(0016天)

20160219.CCPP体系详解(0029天)

20160218.CCPP体系详解(0028天)

20160226.CCPP体系详解(0036天)

20160210.CCPP体系详解(0020天)

20160209.CCPP体系详解(0019天)