数据结构(C语言版) 串数组和广义表 算法设计Demo6

Posted Aiden (winner)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(C语言版) 串数组和广义表 算法设计Demo6相关的知识,希望对你有一定的参考价值。

设任意n个整数存放于数组A(1:n)中,试编写算法,将所有正数排在所有负数前面(要求算法复杂度为0(n))。

[题目分析]

本题属于排序问题,只是排出正负,不排出大小。可在数组首尾设两个指针i和j,i自小至大搜索到负数停止,j自大至小搜索到正数停止。然后i和j所指数据交换,继续以上过程,直到i=j为止。

[算法描述]

void Arrange(int A[],int n)
//n个整数存于数组A中,本算法将数组中所有正数排在所有负数的前面
int i=0,j=n-1,x;  //用类C编写,数组下标从0开始
	while(i<j)
		while(i<j && A[i]>0)
			i++;
		while(i<j && A[j]<0)
			j--;
		if(i<j)
		   x=A[i];
		   A[i++]=A[j];
		   A[j--]=x;
		//交换A[i] 与A[j]
	// while(i<j)
 //算法Arrange结束.

[算法讨论]
对数组中元素各比较一次,比较次数为n。最佳情况(已排好,正数在前,负数在后)不发生交换,最差情况(负数均在正数前面)发生n/2次交换。用类c编写,数组界偶是0…n-1。空间复杂度为O(1)。

以上是关于数据结构(C语言版) 串数组和广义表 算法设计Demo6的主要内容,如果未能解决你的问题,请参考以下文章

C语言版数据结构算法

谁有《数据结构》(C语言版)严蔚敏,清华大学2005年的课本?麻烦把目录告知,非常感谢

数据结构与算法学习笔记 串,数组和广义表

C语言数据结构与算法--------数组和广义表全面总结

数据结构 第4章 串数组和广义表 单元小结重点 BF算法

第四章_串数组和广义表_学习小结