排序:冒泡法

冒泡排序和快速排序都屬於交換排序。

當快速排序爲有序的時候,快速排序將爲冒泡排序,所以快速排序比較適用於亂序的情況。

以下是冒泡排序代碼:

#include <stdio.h>
void main()
{
	int i,j;
	int a[]={4,53,22,44,23,1,34,51,3,785,56};
	for (i=0;i<11;i++)
	{
		for (j=0;j<10-i;j++)
		{
			if (a[j]>a[j+1])
			{
				int tmp;
				tmp=a[j];
				a[j]=a[j+1];
				a[j+1]=tmp;
			}
		}
	}
	for (i=0;i<11;i++)
	{
		printf("%d ",a[i]);
	}
}

快速排序代碼

#include <stdio.h>

int Partition(int A[], int p, int r)
{
    int x = A[r];//選擇x=A[r]作爲主元
    int i = p -1;
    for(int j = p; j <= r-1; j++)
        if(A[j] <= x)//假設A[i]大於x,那麼就不用移動了。第二個語句swap()將x移動到最左方,所以比x大的數都在右方。
        {            //假設A[j]小於x,因爲A[i]的下標i始終小於等於j,那麼說明A[i]是大於x的值,否則便是被移動了。
            i = i+1;//這樣第一個函數swap()將把大於x的A[i]與小於x的A[j]互相交換位置。
			int tmp;
			tmp=A[i];
			A[i]=A[j];
			A[j]=tmp;
        }
	int tmp;
	tmp=A[i+1];
	A[i+1]=A[r];
	A[r]=tmp;

   return i+1;

}

void Quick_Sort(int A[], int p ,int r)
{
    if(p < r)
    {
        int q = Partition(A, p, r);
        Quick_Sort(A, p, q-1);
        Quick_Sort(A, q, r);
    }
	
}


int main()
{   
	
    int C[12] = {4,53,22,44,23,1,34,51,3,785,56,84};
    Quick_Sort(C, 0, 11);
    for(int i = 0; i <= 11; i++)
        printf("%d ",C[i]);
    return 0;
}



發佈了32 篇原創文章 · 獲贊 12 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章