返回首页

如何计算正面的价值观,而做堆排序?这里是我的堆排序,我指望他们在一个循环的方法,但它需要做排序时。是如何形成的?


void Sift(int arr[], int left, int right)

{

	int i, j, x;

    

	i = left;

        j = 2 * i + 1;

	x = arr[i];

            

	while (j <= right)

	{

		if(j < right)

			if(arr[j] < arr[j + 1]) j++;

		

		if (x >= arr[j]) break;

 

		arr[i] = arr[j];

		i = j;

		j = 2 * i + 1;

	}

	

	arr[i] = x;

}

 

void HeapSort(int arr[], int n)

{

    int left, right, temp;

 

    left = n / 2 + 1;

    right = n - 1;

 

    while (0 < left)

    {

	left--;

                    

	Sift(arr, left, right);

    }

 

    while (0 < right)

    {

        temp = arr[left];

	arr[left] = arr[right];

	arr[right] = temp;

 

        right--;

 

	Sift(arr, left, right);

    }

 

    for(int i = 0; i < n; i++)

	if(0 < arr[i]) PosCount++;

}

 

:TCPMem

回答

评论会员: 时间:2