出题:输入一个数组,要求通过交换操作将奇数索引的元素调整到数组前半部分,偶数索引的元素调整到数组后半部分;

分析:

  • 当然如果没有额外要求的话很容易实现,最好使用In-Place的实现策略;考虑插入排序的策略,不过这里的判断条件是遇到第一个奇数的时候才停止。时间复杂度为O(N^2);
  • 另外可以使用快速排序策略,使用两个指针进行双向扫描,左指针一旦遇到偶数则停止,右指针一旦遇到奇数则停止,然后交换左右指针索引的元素,知道左右指针交叉。时间复杂度为O(N)。如果题目要求在一个序列中按照某标准将序列划分成几个部分,快速排序的思路都可以使用;
  • 快速排序的思路可用于多种问题,只要是需要按照某种标准将一个序列划分成两个或者更多的部分,都可以使用快速排序的策略

解题:

 /**
* 从数组第三项开始,假设左边的数组都已经是奇数项在前,偶数项在后
* 然后将当前索引项插入已经排好序的左序列中,一旦遇到奇数项则插入到
* 其右边的偶数项,其他项顺次往右移,跟插入排序类似
* 遍历数组的时候跳过偶数项,可以加速排序时间
* */
void OddEvenInsert(int *array, int length) {
int j, temp;
if(length <= ) return;
for(int i=; i<length;i+=) {
temp=array[i];
j=i-;
while(true) {
if(array[j] % == ) {
array[j+]=array[j];
j--;
} else {
break;
}
}
array[j+]=temp;
}
} void OddEvenQuick(int *array, int i, int j) {
int *left=array+i;
int *right=array+j; int temp;
while(true) {
while(*left% != ) left++;
while(*right% != ) right--;
if(left>right) break; temp=*left;
*left=*right;
*right=temp; left++;
right--;
}
} int main() {
int array[]={,,,,,,,,};
OddEvenInsert(array, );
for(int i=;i<;i++) {
printf("%d, ",array[i]);
}
return ;
}

出题:输入一个链表的头结点,要求反序输出每个结点的值

分析:典型的递归实现,系统栈结构是为程序员免费提供的最好的数据结构

解题:

 struct Node {
int v;
Node *next;
}; void reversePrint(Node *current) {
if(current->next != NULL)
reversePrint(current->next);
printf("%d, ",current->v);
} int main() {
Node* a1=new Node(); a1->v=;
Node* a2=new Node(); a2->v=;a1->next=a2;
Node* a3=new Node(); a3->v=;a2->next=a3;
Node* a4=new Node(); a4->v=;a3->next=a4;
Node* a5=new Node(); a5->v=;a4->next=a5;
Node* a6=new Node(); a6->v=;a5->next=a6; a6->next=NULL;
reversePrint(a1);
return ;
}

最新文章

  1. (转)C#根据当前时间获取周,月,季度,年度等时间段的起止时间
  2. SPSS数据分析—因子分析
  3. memcpy和memmove
  4. JAVA 获取web文件的相对路径
  5. 七、C# 接口
  6. 遍历父视图上的button
  7. Mirantis OpenStack HA
  8. MAC + java 环境配置
  9. appium 【已解决】Android,每次启动手机中都会安装Appium settings和Unclock的方法
  10. docker容器日志收集方案汇总评价总结
  11. ubuntu 环境下的QT程序打包
  12. C# 8中的Async Streams
  13. 菜鸟学习计划浅谈之Linux系统 原
  14. python_数据类型
  15. springmvc接口ios网络请求
  16. springboot项目搭建
  17. DevOps Workshop 研发运维一体化(成都站) 2016.05.08
  18. CCF CSP 201512-2 消除类游戏
  19. Python 常见文件操作的函数示例(转)
  20. webpy/flask/bottle性能测试

热门文章

  1. 洛谷 P3254 圆桌问题【最大流】
  2. [Swift通天遁地]一、超级工具-(5)使用UIWebView(网页视图)加载本地页面并调用JavaScript(脚本)代码
  3. (图论)51NOD 1212 无向图最小生成树
  4. QB学堂济南游记
  5. SQL 初级教程学习(四)
  6. [CERC2017]Buffalo Barricades
  7. 贪心 Codeforces Round #273 (Div. 2) C. Table Decorations
  8. windows下Python的安装,以及IDLE的使用
  9. 持有对方的引用&amp;&amp;内部类
  10. Ubuntu卸载软件包