1. 程式人生 > >氣泡排序,選擇排序,快速排序

氣泡排序,選擇排序,快速排序

1.氣泡排序
氣泡排序(Bubble Sort) 最為簡單的一種排序,通過重複走完陣列的所有元素,通過打擂臺的方式兩個兩個比較,直到沒有數可以交換的時候結束這個數,再到下個數,直到整個陣列排好順序。因一個個浮出所以叫氣泡排序。雙重迴圈時間O(n^2)
void BubbleSort ( int arr[] , int a ){  //氣泡排序演算法 
	
	if(arr==NULL||a<=0)
    {
        return ;
    }
	int temp;
	for(int i=0; i< a; i++ )
		for(int j=i+1; j<a; j++)
			if(arr[i]>arr[j]){
				temp=arr[i];
				arr[i]=arr[j];
				arr[j]=temp;
			}
	print(arr,a);
}
2.選擇排序
選擇排序(Select Sort) 是直觀的排序,通過確定一個Key最大或最小值,再從帶排序的的數中找出最大或最小的交換到對應位置。再選擇次之。雙重迴圈時間複雜度為O(n^2)
void SelectSort( int arr[], int a){   // 選擇排序 
	if(arr==NULL||a<=0)
    {
        return ;
    }
    for( int i=0; i<a; i++){
    	int MinKey=	arr[i];
    	for(int j=i ; j<a; j++){
    		if(MinKey>arr[j]){
    			int temp= arr[j];
    			arr[j]=MinKey;
    			MinKey=temp;
			}
		}
		arr[i]=MinKey;
	}
    
    print(arr,a);
    
} 

3.快速排序
int compInc(const void *a, const void *b)   //快排遞增 
{  
    return *(int *)a - *(int *)b;  
}  
 
int compDec(const void *a, const void *b)  //快排遞減 
{  
   return *(int *)b - *(int *)a;  
} 
通過使用qsort(陣列名,長度,sizeof(第一個數長度),compInc/comoDec) 進行實現陣列的排序 ~~~~~~~~~~~~ 其他排序會根據學的增加進行補充 ~~~~~~~~~~~
#include<iostream>
#include<cstdlib>

using namespace std;
void print(int arr[], int a){
	for (int i=0; i<a ; i++ )
		cout << arr[i] << " ";
		cout <<endl;
}



int compInc(const void *a, const void *b)   //快排遞增 
{  
    return *(int *)a - *(int *)b;  
}  
 
int compDec(const void *a, const void *b)  //快排遞減 
{  
   return *(int *)b - *(int *)a;  
}  
 
  
void BubbleSort ( int arr[] , int a ){  //氣泡排序演算法 
	
	if(arr==NULL||a<=0)
    {
        return ;
    }
	int temp;
	for(int i=0; i< a; i++ )
		for(int j=i+1; j<a; j++)
			if(arr[i]>arr[j]){
				temp=arr[i];
				arr[i]=arr[j];
				arr[j]=temp;
			}
	print(arr,a);
}

void SelectSort( int arr[], int a){   // 選擇排序 
	if(arr==NULL||a<=0)
    {
        return ;
    }
    for( int i=0; i<a; i++){
    	int MinKey=	arr[i];
    	for(int j=i ; j<a; j++){
    		if(MinKey>arr[j]){
    			int temp= arr[j];
    			arr[j]=MinKey;
    			MinKey=temp;
			}
		}
		arr[i]=MinKey;
	}
    
    print(arr,a);
    
} 


int  main()
{
	int arr[10];
	for(int i=0; i<10; i++ )
		cin >>arr[i];
	cout << endl;
	 BubbleSort(arr,10);
	cout << endl;
	cout << endl;
	SelectSort(arr,10);
	cout << endl;
	cout << endl;
	qsort(arr,10,sizeof(arr[0]),compInc);
	print(arr,10);
	qsort(arr,10,sizeof(arr[0]),compDec);
	print(arr,10);
	
	
	return 0;
}