一、氣泡排序
相信氣泡排序大家都知道,無非是每一趟排序時將相鄰兩個元素進行交換,根據從大到小或從小到大的順序,交換起來略有不同,如此進行n-1次排序即可得到整個陣列有序。
1、平均時間複雜度為o(n^2)
2、最好情況下時間複雜度為o(n),此時設定標誌位,元素有序時直接退出
3、最壞之間複雜度為o(n^2)
4、空間複雜度為o(1)
**實現:
/*
*進行陣列的氣泡排序
*/#include
#define maxsize 100
/* *進行氣泡排序
*/void bubblesort(int a , int
length) ;
/* *進行元素的交換
*/void swap(int
*a , int
*b) ;
/* *進行陣列的顯示
*/void displayarray(int a , int
length) ;
void main()
printf("before sort... \n") ;
displayarray(a , length) ;
bubblesort(a , length) ;
printf("after sort... \n") ;
displayarray(a , length) ;
}void bubblesort(int a , int
length)}}
}void swap(int
*a , int
*b)void displayarray(int a , int
length)
printf("\n") ;
}
二、快速排序
快速排序即從陣列中選擇乙個標誌位,將比其小的元素放置在其前面,比其大的元素放置在其後面,然後將兩邊的前面的陣列與後面的陣列部分做同樣的置換,直至元素有序即可。
1、平均時間複雜度為o(nlogn)
2、最好時間複雜度為o(nlogn)
3、最壞時間複雜度為o(n^2),此時元素基本有序
4、空間複雜度為o(logn)
**實現
/*
*進行陣列的快速排序
*/#include
#define maxsize 100
/* *快速排序演算法
*/void quicksort(int a , int low , int high) ;
/* *進行一趟排序
*返回值為中間值的下標
*/int quickpass(int a ,int low , int high) ;
/* *進行陣列的顯示
*/void displayarray(int a , int length) ;
void main()
printf("before sort... \n") ;
displayarray(a , length) ;
quicksort(a , 0 , length - 1) ;
printf("after sort... \n") ;
displayarray(a , length) ;
}void quicksort(int a , int low , int high)
}int quickpass(int a , int low , int high)
if(low < high)
while(low < high && a[low] < temp)
if(low < high)
}a[low] = temp ;
return low ;
}void displayarray(int a , int length)
printf("\n") ;
}
氣泡排序與快速排序
氣泡排序與快速排序屬於互換類的排序方法。所謂互換排序是指借助資料元素之間的互相交換進行排序的一種方法。1.1氣泡排序 演算法情景 將乙個無序的陣列進行氣泡排序 氣泡排序方案1 演算法思路 氣泡排序方案1的排序思想就是外層迴圈n 1 內層迴圈n i 1次,內層的每次的迴圈都是將最大的數字下沉到最後位置...
快速排序與氣泡排序
1.快速排序 思想 先隨機確定乙個key值,再通過將i 和j 分別將陣列第一次分為兩個區間,i從陣列的頭開始,j從陣列的尾部開始,其中如果遇到第乙個區間的值大於key的值就將這個值放到第二個區間,直到第乙個區間裡的所有值都要小於第二個區間的值,最後當i和j相等,將arr i key 呼叫遞迴再次執行...
java氣泡排序與快速排序
1.氣泡排序 public class bubblesort return count public int sort2 int array return count public static void main string args system.out.println bs.sort1 ar...