有n个整数,使前面各数顺序向后移动m个位置最后m个数变成最前面的m个数
来源:互联网 发布:源系统数据质量报告 编辑:程序博客网 时间:2024/05/29 08:29
#include<stdio.h>#define n 10void move(int data[] , int m){int i , t ; while(m--){t = data[n-1] ; for( i = n-1 ; i >= 1 ; i--){data[i] = data[i-1] ; }data[0] = t ;}}int main(){int i ;int arr[n]={1,2,3,4,5,6,7,8,9,10} ; move(arr , 3) ;for(i = 0 ; i < n ; i++){printf("%d ",arr[i]) ;}return 0 ;}
上述程序中时间复杂度 为O(n*n) 想想应该还有另外的解决方案来 减少时间复杂度
其实我们可以这样做
在移动m个时 就相当于 把前n-m 个与m个逆序了 一样 由此我们可以推算出 一个算法
把前n-m个 和m个同时逆序 然后再把他们整体逆序就得到 结果
#include<stdio.h>#define n1 10#define m1 3void move(int data[] , int m , int n ){ int i , t ; for(; m < n ; m++,n--) { t = data[n] ; data[n] = data[m]; data[m] = t ; }}int main(){int i ;int arr[n1]={1,2,3,4,5,6,7,8,9,10} ; move(arr, 0 , n1 -m1 -1); // 将前n-m个逆序 move(arr , n1 -m1 ,n1-1) ; // 将后m个逆序 move(arr , 0 , n1-1) ; // 将整体逆序 for(i = 0 ; i < n1 ; i++){printf("%d ",arr[i]) ;}return 0 ;}
0 0
- 有n个整数,使前面各数顺序向后移动m个位置最后m个数变成最前面的m个数
- c语言编程 有n个整数,使其前面各数顺序向后移动m个位置,最后m个数变成前面的m个数
- 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
- 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
- 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
- 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
- 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
- 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
- 【程序36】 题目:有n个整数,使其前面各数顺序向后移m个位置, 最后m个数变成最前面的m个数
- java 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
- Java-有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 。
- java题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
- C语言题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
- 有n个数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数。
- 有n个数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数。
- 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。(指针)
- 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数
- 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数
- 路人甲的帮助——C指针的指针引发的错误
- 如何提高多线程程序的cptgju利用率
- JQuery learning notes.
- CreateThread 函数
- Common Subsequence
- 有n个整数,使前面各数顺序向后移动m个位置最后m个数变成最前面的m个数
- 开始写一个属于自己的类库SqlHelper
- ant学习笔记
- Effective C++——》条款19:设计class犹如设计type
- 创建App.config配置文件的连接字符串
- google高级搜索命令
- Python学习笔记(3)事件驱动模型,frame, button
- 全排列生成法(6种),字典序
- 揭密微软游戏云计算技术