930-2016
记录一下自己做真题的心里过程
2016-17
//真题-2016-17
//将一个数组置换
bool reverse(int a[], int h, int t, int size){
if(h >= t || t >= m)
return false;
int i,j, temp, mid = (h+t)/2;
for(i=h, j=0; i<mid; i++,j++){
temp = a[i];
a[i] = a[t-j-1];
a[t-j-1] = temp;
}
}
void exchange(int a[], int h, int t, int size){
reverse(a, 0, h+t-1, size);
// reverse(a, 0, t-1, size);
// reverse(a, t, h+t-1, size);
}
/*
若仅是置换一个数组,那么上述代码够用
但若是要将数组内部进行再次置换,则需要用到注释的两行
*/
//可运行的代码
#include<stdio.h>
#define m 50
int main()
{
bool reverse(int a[], int h, int t, int size);
void exchange(int a[], int h, int t, int size);
int n, i, temp, a[m] = {0};
printf("请输入要插入元素的个数:\n");
scanf("%d",&n);
printf("请输入%d个元素:\n",n);
for(i=0; i<n; i++){
scanf("%d",&a[i]);
}
exchange(a,1,n,n);
printf("逆置后的数组为:\n");
for(i=0; i<n; i++){
printf("%d ",a[i]);
}
return 0;
}
bool reverse(int a[], int h, int t, int size){
if(h >= t || t >= m)
return false;
int i,j, temp, mid = (h+t)/2;
for(i=h, j=0; i<mid; i++,j++){
temp = a[i];
a[i] = a[t-j-1];
a[t-j-1] = temp;
}
}
void exchange(int a[], int h, int t, int size){
reverse(a, 0, h+t-1, size);
// reverse(a, 0, t-1, size);
// reverse(a, t, h+t-1, size);
}
2016-20
//真题-2016-20
//简单选择排序(思想要记住!)
void sort(int a[], int n){
int i,j,k,t;
for(i=0; i<n-1; i++){ //用i来代表较小的元素应该放的位置
k = i; //用k来代表较小的元素
for(j=i+1; j<n; j++)
if(a[j]<a[k])
k = j;
t = a[k];
a[k] = a[i];
a[i] = t;
}
}