您的位置:首页 > 其它

数组的区间调整

2016-01-23 19:38 190 查看
给定一个数组,比如{1,2,2,2,3,3,4,5,6,6,7,7,8,8,8,9};要求进行区间调整,该数组为有序数组,令左半部分为增序,右半部分可以无序

比如这个数组,排序后左半部分就是 1 2 3 4 5 6 7 8 9,右半部分则是否增序无所谓。

思路:

设置两个变量 u 和i u初始为0 i初始为1

我们假定a【0】到a【u】为左半区间,a【u+1】到a【i】为右半区间

于是从左到右遍历

此题中 当i=1 2不等于a[u]=a[0]=1时候,交换a[u]

#include <iostream>
#include <algorithm>
using namespace std;
double arr[]={1,2,2,2,3,3,4,5,6,6,7,7,8,8,8,9};
int len=16;

void fun1()
{
int u=0;
int i=1;
//
for(;i<len;i++)
{
if(arr[i]!=arr[u])
{
u++;
swap(arr[i],arr[u]);
}
}

}
void Print()
{
for(int i=0;i<len;i++)
cout<<arr[i]<<" ";
cout<<endl;
}
int main()
{
fun1();
Print();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: