39、线性表中元素前面负数后面正数

已知线性表按顺序存储于内存,每个元素都是整数,用最少时间把所有值为负数的元素移到全部正数值元素前面的算法。

#include <iostream>

using namespace std;
# define N 5                     //设置线性表的阈值
typedef struct 
{
	int data[N+1];     //预留0号位置 作为哨兵
	int len;

}SeqList;  //定义一个线性   顺序表


void print(SeqList L)  //打印运行结果
{
	int i;
	for (i = 1; i<=L.len; i++)
		printf("%d,", L.data[i]);
		printf("\n");
}

void swap(SeqList *l,int low,int high) {  //交换两个数据
	int temp;
	temp = l->data[low];
	l->data[low] = l->data[high];
	l->data[high] = temp;
}
void divide(SeqList *l,int low ,int high) {   //进行分割处理   l   1   5
		
	while (low < high) {
		while (low < high && l->data[high]>=0)
			high--;
	
		while (low < high && l->data[low] < 0)
			low++;

		swap(l, low, high);			
		
	}
}


int main(int argc,char *argv[]) {
	int data [] = { 10,-1,5,8,-3 };
	SeqList  s1;
	for (int i = 0; i < 5; i++) {
		s1.data[i+1] = data[i];
	}
	s1.len = N;
	cout << "分割前:==" << endl;
	print(s1); 
	cout << "分割后:==" << endl;
	divide(&s1,1,s1.len);
	
	print(s1);

	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值