老老实实复习算法: 2 冒泡排序

算法描述:

BUBBLE_SORT(A)

for i = [1, len(A)]

for j = -[len(A), i+1] // 这个 '-' 表示降序, 呵呵

if A[j] < A[j-1]

exchange A[j], A[j-1]

 

c++实现代码如下:

#ifndef _bubble__sort__hh #define _bubble__sort__hh /** 冒泡排序, O(n^2), 原地 BUBBLE_SORT(A, start, size) for i = 0 to size for j = size downto i+1 if A[j] < A[j-1] exchange A[j], A[j-1] */ template <class T> inline void algo_sort_bubble (T *array, size_t start, size_t size) { for (size_t i = 0; i < size; i++) { for (size_t j = size-1; j >= i+1; j--) { if (array[start+j] < array[start+j-1]) { T key = array[start+j]; array[start+j] = array[start+j-1]; array[start+j-1] = key; } } } } #endif // bubble.h  

你可能感兴趣的:(c,算法,Class,Exchange)