氣泡排序 選擇排序 插入排序 快速排序

2021-07-27 07:04:44 字數 1254 閱讀 8431

#include//氣泡排序,思想:從最末位開始 往前一位一位比較,比前一位小的話,就交換位置

//兩個for,第乙個for迴圈用於記錄已排序的位置,第二個for迴圈用於已排序位置到結束位置之間的氣泡排序

void popsort(int *p ,int n)

} }}//選擇排序,由前往後選擇最小的數。一輪比較完後,將最小的數放到前面

//兩個for迴圈,第乙個for用於固定位置,第二個for用於查詢固定位置後面最小的數,然後將最小的數和固定位置上的數交換

void selectsort(int *p,int n)

if (k != i)

}}//插入排序,插入前面都是已經順序排序的序列。

//從第二個數開始(第乙個數本身就是已排序序列),依次插入前面已排序的序列

void insertsort(int *p,int n)

else

} }}

void swap(int *a,int *b)

//快速排序,時間複雜度o(logn)。二分法思想,每二分一次就能確定乙個數的準確位置

//演算法思想:取第乙個數為哨兵,然後從最後面的數依次和哨兵比較(a、比哨兵的值小,就交換end和begin兩個位置的值。否則end--,繼續比較.

//找到乙個比哨兵小的值後。就開始從前面begin位置和哨兵值比較(b、比哨兵的值大,就交換begin和end兩個位置的值。否則begin++,繼續比較。

//------直到begin和end相等,結束乙個遞迴,將哨兵的值賦值給begin的位置,這個位置就是該哨兵準確的位置

//**,三個while迴圈:大while迴圈,確保完整掃瞄一遍資料,第二個while迴圈用於,end和哨兵的比較,第三個while迴圈用於,begin和哨兵的比較

void quicksort(int *p,int ibegin,int iend)

} while(ibegin < iend)

}} p[ibegin] = ivalue;

quicksort(p,i,ibegin-1);

quicksort(p,ibegin+1,j);

}void main()

; //popsort(isuzu,10);

//selectsort(isuzu,10);

//insertsort(isuzu,10);

quicksort(isuzu,0,10);

int i=0;

while(i<11)

}

氣泡排序 選擇排序 插入排序 快速排序

氣泡排序 元素兩兩比較,大的往後放,經過一輪比較後,那麼最大的元素就會出現在最後面。public static void main string args for int j 0 j arr i 1 system.out.println arrays.tostring arr 每次拿乙個元素,跟他後...

氣泡排序 選擇排序 快速排序 插入排序

排序只對一維資料有意義.兩層迴圈,第一層是遍歷每乙個元素.第二層迴圈,讓兩兩之間進行比較交換.時間複雜度 o n 2 空間複雜度 o 1 穩定性 穩定的 def buble sort arr for i in range len arr 1 for j in range len arr i 1 if...

php 氣泡排序,選擇排序 插入排序 快速排序

1.氣泡排序 arr array 1,43,54,62,21,66,32,78,36,76,39 function getpao arr return arr 2.選擇排序法 function select sort arr if p i return arr 3.插入排序法 function in...