王道データ構造手順表練習コードの実現
28071 ワード
p 19王道データ構造手順表の練習問題
#include
int test1(int *a,int len){
int p = -1;//
int value = a[0];//
for(int i=1;i<len;i++){
if(a[i]<value){
value = a[i]; p = i;
}
}
a[p] = a[len-1];
return value;
}
void test2(int *a,int len){
//
int i=0;int j = len-1;
while(i<j){
int t = a[i];
a[i] = a[j];
a[j] = t;
i++;j--;
}
}
void test3(int *a,int len,int x){
int j = 0;
for(int i=0;i<len;i++){
if(a[i]!=x) a[j++] = a[i];
}
printf("%d",j);
printa(a,j);
}
void test4(int *b,int len,int s,int t){
if(s>=t||len==0) {printf(" ");return;}
// s
int i = 0,j = 0;
for(;i<len;i++){
if(b[i]>=s) break;
}
for(;j<len;j++){
if(b[j]>t) break;
}
for(;j<len;j++,i++){
b[i] = b[j];
}
len = i;
printa(b,len);
}
void test5(int *b,int len,int s,int t){
int j=0;
for(int i=0;i<len;i++){
if(!(s<=b[i]&&b[i]<=t)){
b[j++] = b[i];
}
}
printa(b,j);
}
void test6(int *b,int len){
int i=0;
for(int j=1;j<len;j++){
if(b[j]!=b[i]) b[++i] = b[j];
}
printa(b,i);
}
void test7(int *a,int *b,int lena,int lenb){
//a b
int s[lena+lenb-1];
int i=0,j=0;int p = 0;
while(i<lena&&j<lenb){
if(a[i]<=b[j]) s[p++] = a[i++];
else s[p++] = b[j++];
}
while(i<lena) s[p++] = a[i++];
while(j<lenb) s[p++] = b[j++];
printa(s,p);
}
void test8(int *b,int l,int r){
//l-r
int i = l;int j = r;
while(i<j){
int t = b[i];
b[i] = b[j];
b[j] = t;
i++;j--;
}
}
void test9(int * a,int len,int x){
int l = 0;int r = len-1;
while(l<r){
int mid = (l + r) /2;
if(a[mid]>=x) r = mid;
else l = mid + 1;
}
//
}
//2010 test8 reverse
void test10(int *a,int len,int p){//p
test8(a,0,p-1);
test8(a,p,len-1);
test8(a,0,len-1);
printa(a,len);
}
int main()
{
int a [] = {1,2,3,4,5,6,10,64};
int b [] = {1,2,3,4,5,6,10,20,30};
test10(a,8,3);
}
void printa(int *a,int len){
printf("
");
for(int i=0;i<len;i++){
printf("%d ",a[i]);
}
}
未完…