改進的氣泡排序和選擇排序(雙向冒泡/一次遍歷選出最大和最小的選擇排序)C語言實現

Unicorn柏璟發表於2020-12-05

雙向氣泡排序:

void doubleBubleSort(int* a, int length) {//雙向氣泡排序
	int temp;
	for (int i = length-1,k=0; i > 0; i--,k++)
	{
		int j = k;
		for (; j < i; j++)
			if (*(a + j + 1) < *(a + j)) {
				temp = *(a + j);
				*(a + j) = *(a + j + 1);
				*(a + j + 1) = temp;
			}
		i--;
		for (int z = j; z > 0; z--)
			if (*(a+z)<*(a+z-1))
			{
				temp = *(a + z);
				*(a + z) = *(a + z - 1);
				*(a + z - 1) = temp;
			}
	}
}

兩端選擇排序:

 

相關文章