/*-----------------------------------------------------------------------------
* Project: Max.cpp
* Name: zwp
* Date: 2013.11
*------------------------------------------------------------------------------*/
#include <iostream>
#define MAX 10
int numbers[MAX] =
{
10, 12, 13, 14, 9, 16, 17, 18, 19, 20
};
int max(int* num, int size)
{
int max = num[0];
for(int index = 1; index < size; ++ index)
{
if(max < num[index])
max = num[index];
}
return max;
}
int min(int* num, int size)
{
int min = num[0];
for(int index = 1; index < size; ++ index)
{
if(min > num[index])
min = num[index];
}
return min;
}
bool search(int* num, int size, int special)
{
for(int index = 0; index < size; ++ index)
{
if(num[index] == special)
return true;
}
return false;
}
bool binary_search(int* num, int size, int special)
{
int index = 0; // left
int indeu = size - 1; // right
int mid = 0; // middle
int location = 0; // flag
while(index < indeu)
{
mid = (index + indeu)/2;
if(special > num[mid])
index = mid + 1;
else
indeu = mid;
}
if(special == num[index])
location = index;
else
location = 0;
return location;
}
void bubble_sort(int* num, int size)
{
int temp = 0;
for(int index = 0; index < size - 1; ++ index)
for(int indeu = 0; indeu < size - (index+1); ++ indeu)
if(num[indeu] > num[indeu+1])
{
temp = num[indeu];
num[indeu] = num[indeu+1];
num[indeu+1] = temp;
}
for(int index = 0; index < size; ++ index)
{
printf("%d ", num[index]);
}
}
void insert_sort(int* num, int size)
{
int index = 0;
int special = 0;
for(int indeu = 1; indeu < size; ++ indeu)
{
index = 0;
while(num[indeu] > num[index])
index++;
special = num[indeu];
for(int indem = 0; indem < indeu - index - 1; ++ indem)
num[indeu-indem] = num[indeu - indem - 1];
num[index] = special;
}
for(int index = 0; index < size; ++ index)
printf("%d ", num[index]);
}
int scon[] =
{
25, 10, 5, 1
};
void change(int* sco, int n)
{
for(int index = 0; index < sizeof(sco)/sizeof(sco[0]); ++ index)
{
while(n > sco[index] && n == sco[index])
{
n -= sco[index]; // 把面值为sco[index] 的硬加入币所找的零钱中
printf("%d ", sco[index]);
}
}
}
int main(int argc, char* argv[])
{
if(binary_search(numbers, MAX, 0))
printf("Search it ....");
else
printf("not found!....");
insert_sort(numbers, MAX);
change(scon, 74);
system("pause");
return 0;
}
#include <iostream>
#include <string>
#include <vector>
#define DIGITS 3 // 默认单个数字的位数
#define ROTX 10 // 以示进制排序
void split(void)
{
using namespace std;
vector<string> Source;
string number;
for(int index = 0; index < 10; ++ index)
{
cout <<index+1<<" : ";
cin >>number;
Source.push_back(number);
}
vector<string> Array[ROTX];
/*
** 第一次按照每一位进行分类
*/
for(int index = 1; index <= DIGITS; ++ index)
{
for(int indeu = 0; indeu < Source.size(); ++ indeu)
{
switch(Source[indeu][DIGITS-index]) // 第三位元素的个位
{
case '0':
Array[0].push_back(Source[indeu]);
break;
case '1':
Array[1].push_back(Source[indeu]);
break;
case '2':
Array[2].push_back(Source[indeu]);
break;
case '3':
Array[3].push_back(Source[indeu]);
break;
case '4':
Array[4].push_back(Source[indeu]);
break;
case '5':
Array[5].push_back(Source[indeu]);
break;
case '6':
Array[6].push_back(Source[indeu]);
break;
case '7':
Array[7].push_back(Source[indeu]);
break;
case '8':
Array[8].push_back(Source[indeu]);
break;
case '9':
Array[9].push_back(Source[indeu]);
break;
default:
cout <<"Warring: Out of Range..."<<endl;
}
}
/*
** 清空之前所装载的元素
*/
Source.erase(Source.begin(), Source.end());
/*
** 将所读每一位,之后从左到右,从下往上。 重新装载到元数据区中
*/
for(int index = 0; index < ROTX; ++ index)
{
for(int indeu = 0; indeu < Array[index].size(); ++ indeu)
{
Source.push_back(Array[index][indeu]);
}
}
for(int index = 0; index < ROTX; ++ index)
{
Array[index].erase(Array[index].begin(), Array[index].end());
}
}
/*
** 显示最终结果
*/
for(int index = 0; index < ROTX; ++ index)
{
cout <<Source[index]<<" ";
}
}
int main(void)
{
split();
system("pause");
return 0;
}
/*----------------------------------------------------------
* Project: QuickSort.cpp
* Name: zwp
* Date: 2013.11
*--------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
int findpos(int* num, int left, int right)
{
int vol = num[left];
while(left < right)
{
while(left < right && num[right] >= vol)
--right;
num[left] = num[right];
while(left < right && num[left] <= vol)
++left;
num[right] = num[left];
} // 终止之后left == right
num[left] = vol;
return vol;
}
bool quicksort(int* num, int left, int right)
{
int pos;
if(left < right)
{
pos = findpos(num, left, right);
quicksort(num, left, pos-1);
quicksort(num, pos+1, right);
}
return true;
}
int main(void)
{
int number[] = { 2, 1, 0, 5, 4, 3, 8 };
int index;
quicksort(number, 0, sizeof(number)/sizeof(*number)-1);
for(index = 0; index < sizeof(number)/sizeof(*number); ++ index)
printf("%d ", number[index]);
system("pause");
return 0;
}
心动C++ 情牵基础算法III
最新推荐文章于 2023-09-07 16:31:08 发布