排序算法專題:quickSort,choose,bubble

1、快速排序(升序)

void quickSort(int sort[], int m, int n)
{
	int k, t, i, j;

	if (m < n)
	{
		i = m;
		j = n + 1;
		k = sort[m];
		while (i < j)
		{
			for (i = i + 1; i < n; i++)
				if (sort[i] >= k)
					break;
			for (j = j - 1; j > m; j--)
				if (sort[j] <= k)
					break;
			if (i < j)
			{
				t = sort[i];
				sort[i] = sort[j];
				sort[j] = t;
			}
		}

		t = sort[m];
		sort[m] = sort[j];
		sort[j] = t;
		quickSort(sort, m, j - 1);
		quickSort(sort, i, n);
	}
}

2、選擇排序法(升序)

void choose (int a[], int n)  		//  a[]是指針、等價*p,n是數組a中待排序元素的數量 
{
    int  i, j, index, temp;
    for( i = 0; i < n-1; i++)		//
	{
		index = i ;
        for (j = i + 1; j < n; j++ )	
            if (a[j] < a[index])	index = j ;	// 比較大小,記錄最小元素的下標  
		
		temp   	 = a[index] ;				// 剩餘元素的最小值跟最靠前的元素交換
		a[index] = a[i] ;
		a[i]     = temp ;		
	}
}

3、冒泡排序法(升序)

void bubble (int a[] , int n)		// a[]是指針、等價*p,n是數組a中待排序元素的數量
{
	int  i , j , temp ;
	for(i=0; i<n-1; i++)
	    for(j=0; j<(n-1)-i; j++)
			if(a[j] > a[j+1])		// 後面的元素比較大
			{	
				temp  = a[j];
				a[j]  = a[j+1];
				a[j+1]= temp;		
			}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章