33,008
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include "iostream"
using namespace std;
int main(int argc, char* argv[])
{
int arr[] = {11,12,13,14,15,16,17,21,22,23,24,25,26,27};
void sort_arr1(int array[],int n);//实现将b系列元素插入到正确位置
void sort_arr2(int array[],int n);//实现功能,但是时间复杂度不符合要求
void PrintArr(int NumArr[],int n);//打印所有元素
sort_arr2(arr,7);//函数调用 注意 这里传入的参数为n,而数组元素一共有2n个元素
return 0;
}
void PrintArr(int NumArr[],int n)
{
int *p = NumArr;
while( p < NumArr+n ) cout<<*p++<<" ";
cout<<endl;
}
void sort_arr1(int array[],int n)
{
int i,j,temp;
j = 1; //从数组的第二项开始
for (i=n;i<2*n-1;i++)
{
temp = array[i-n+j];
array[i-n+j] = array[i];
array[i] = temp;
j++;
printf("第%d趟 ",j-1);
PrintArr(array,n*2);
}
}
void sort_arr2(int array[],int n)
{
int i,j,k,temp;
j = 1;
for(i=n;i<2*n-1;i++)
{
temp = array[i-n+j];//保存被b代替的a位置元素
array[i-n+j] = array[i];//用b位置元素代替a位置元素
//将当前a位置和b位置之间的所有元素后移一位
k = i;
while(k>i-n+j)
{
array[k] = array[k-1];
k--;
}
array[i-n+j+1] = temp; //后移后 出现一个空位(即当前a元素的后一个元素),用先前保存过的被b替换过的a 代替
j++;
printf("第%d趟 ",j-1);
PrintArr(array,n*2);
}
}
#include <iostream>
#include <conio.h>
using namespace std;
void change_index(int nArray[],int nLen);
int main(int argc, char* argv[])
{
int nArray[] = {0,2,4,6,8,1,3,5,7,9};
change_index(nArray,10);
for(int i=0;i<10;i++)
{
cout<<nArray[i]<<" ";
}
cout<<endl;
getch();
return 0;
}
void change_index(int nArray[],int nLen)
{
int *pArray = new int[nLen];
int i = 0,j=0;
for(i=0;i<nLen/2;i++)
{
pArray[j] = nArray[i];
j += 2;
}
j = 1;
for(;i<nLen;i++)
{
pArray[j] = nArray[i];
j += 2;
}
for(i=0;i<nLen;i++)
{
nArray[i] = pArray[i];
}
delete []pArray;
}