設待排序陣列為a[n]
(1)直接插入排序
思想:將陣列a[n]分為乙個有序區a[1]...a[i] 和乙個無序區a[i+1]....a[n-1],每一次將a[i+1]插入有序區,形成乙個新的有序區,如此反覆。
**如下:
#include "stdafx.h"
#include using namespace std;
typedef int type;
//直接插入排序
void insertsort(type a,int n)
a[j]=temp;
}}
(2)直接選擇排序
思想: 將陣列a[n]分為乙個有序區a[1]...a[i] 和乙個無序區a[i+1]....a[n-1],每次將無序區最大或最小的值找出,並置於有序區尾部。
**如下:
//直接選擇排序
void choosesort(type a,int n)
while((a[i](5)堆排序
思想: 首先建造乙個初始大堆;其次,每一趟排序都是將當前無序區的堆頂記錄a[0]和區間最後乙個記錄交換,將新的無序區調整為堆。
//堆排序
//生成大根堆
//調整以spoint為根結點的二叉樹為大堆 n為陣列大小
void swap(type *a,type *b)
void createheep(type a,int spoint, int n)
for(i=(n-1);i>=1;i--) //堆排序
}
(6)歸併排序
思想: 分治法,先講乙個待排序陣列遞迴分割槽,直至分為2個有序陣列為止(陣列中只有乙個元素時,則肯定有序); 而後將2個排好序的陣列進行合併.
**如下:
//歸併排序
void mergesort(type *a,int left,int mid,int right)
{ int i=left;
int j=mid+1;
int k=0;
type *temp=new type[right-left+1];
while((i<=mid)&&(j<=right))
{ if(a[i]
氣泡排序 選擇排序 插入排序 快速排序
include 氣泡排序,思想 從最末位開始 往前一位一位比較,比前一位小的話,就交換位置 兩個for,第乙個for迴圈用於記錄已排序的位置,第二個for迴圈用於已排序位置到結束位置之間的氣泡排序 void popsort int p int n 選擇排序,由前往後選擇最小的數。一輪比較完後,將最小...
氣泡排序 選擇排序 插入排序 快速排序
氣泡排序 元素兩兩比較,大的往後放,經過一輪比較後,那麼最大的元素就會出現在最後面。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...