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");
}
相關文章
- 20160217.CCPP體系詳解(0027天)
- 20160124.CCPP詳解體系(0003天)
- 20160125.CCPP詳解體系(0004天)
- 20160126.CCPP體系詳解(0005天)
- 20160127.CCPP體系詳解(0006天)
- 20160130.CCPP體系詳解(0009天)
- 20160203.CCPP體系詳解(0013天)
- 20160211.CCPP體系詳解(0021天)
- 20160214.CCPP體系詳解(0024天)
- 20160215.CCPP體系詳解(0025天)
- 20160224.CCPP體系詳解(0034天)
- 20160218.CCPP體系詳解(0028天)
- 20160219.CCPP體系詳解(0029天)
- 手遊《天地劫》的三天體驗——深度系統剖析及玩法詳解
- 20160122.CCPP詳解體系(0001天)
- 20160123.CCPP詳解體系(0002天)
- 20160128.CCPP體系詳解(0007天)
- 20160129.CCPP體系詳解(0008天)
- 20160131.CCPP體系詳解(0010天)
- 20160204.CCPP體系詳解(0014天)
- 20160205.CCPP體系詳解(0015天)
- 20160210.CCPP體系詳解(0020天)
- 20160212.CCPP體系詳解(0022天)
- 20160207.CCPP體系詳解(0017天)
- 20160225.CCPP體系詳解(0035天)
- 20160226.CCPP體系詳解(0036天)
- 20160227.CCPP體系詳解(0037天)
- 20160222.CCPP體系詳解(0032天)
- 20160221.CCPP體系詳解(0031天)
- 20160201.CCPP體系詳解(0011天)
- 20160202.CCPP體系詳解(0012天)
- 20160209.CCPP體系詳解(0019天)
- 20160216.CCPP體系詳解(0026天)
- 20160206.CCPP體系詳解(0016天)
- 20160208.CCPP體系詳解(0018天)
- 20160223.CCPP體系詳解(0033天)
- 20160220.CCPP體系詳解(0030天)
- MySQL體系結構詳解MySql