Beispiel #1
0
int find_key(int arr[],int low,int high)
{
	int key;
	key=arr[low];
	int tempdata;

	while(low<high)
	{
		while(low<high && arr[high]>key)
			high--;
		swapdata(low,high);
		while(low<high && arr[low]<key)
			low++;
		swapdata(low,high);
	}
	return low;
}
Beispiel #2
0
int bubble_rank1(int arr[],int length)
{
	int i,j;

	for(i=0;i<length;i++)
	{
		for(j=i+1;j<length;j++)//与i后面所有的数组元素进行相比,找出其中最小的元素
		{
			if(arr[i]>arr[j])
				swapdata(arr,i,j);
		}
	}
	return 1;
}
Beispiel #3
0
int main(void)
{
	int x, y;
	
	printf("请输入x, y:");
	scanf("%d,%d", &x, &y);

	printf("交换数据前: x= %d, y= %d \n", x, y);

	swapdata(x, y);
	printf("交换后:x = %d, y = %d \n", x, y);

	return 0;
}
Beispiel #4
0
void heapsort(int arr[],int length)
{
	int i;
	int end;

	end = length-1;

	for(i=end/2;i>=0;i--)
		heapcreat(arr,i,end);
	for(i=end;i>0;i--)
	{
		swapdata(arr,0,i);
		heapcreat(arr,0,i-1);
	}
}
Beispiel #5
0
int selectsort(int arr[],int length)
{
	int i,j;
	int minflag;   //设置最小元素的标记位

	for(i=0;i<length;i++)
	{
		minflag=i;         //标记为当前的i

		for(j=i+1;j<length;j++)
		{
			if(arr[minflag]>arr[j])  //寻找最小的元素
				minflag=j;           //设置最小标记位
		}
		if(i!=minflag)               //最小标记位是否发生改变
			 swapdata(arr,i,minflag);
	}
	return 1;
}
Beispiel #6
0
int bubble_rank2(int arr[],int length)
{
	int i,j;
	int	flag=2;//设置的标记位,并且初始化为2

	for(i=0;i<length && flag;i++)//若flag=0,则不进行遍历,这样可以减少比较有序的数列的遍历次数
	{                            //比如2,1,3,4,5,6,7,8。仅仅遍历一次可以得到结果,避免后面的不必要的遍历
		flag=0;                  //flag为0,表示数列未进行遍历,此处的i往后的元素均是有序的                  

		for(j=length-2;j>=i;j--)
		{
			if(arr[j]>arr[j+1])  //倒序寻找最小的元素
			{
			   swapdata(arr,j,j+1);
				flag=1;          //标记数列进行过变动
			}
		}
	}
	return 1;
}