插入排序 堆排序 快速排序實現

2021-10-05 10:39:22 字數 1398 閱讀 7410

為什麼要排序

1. 有時應用本身就需要對資訊進行排序。例如對財務報表進行排序

2. 很多演算法通常把排序作為關鍵子程式,關鍵技術也體現在排序演算法中

演算法最壞情況執行時間

平均情況/期望執行時間

插入排序

o(n^2)

o(n^2)

堆排序o(n lgn)

--快速排序

o(n^2)

o(n lgn)

1. 插入排序

/*插入排序

p :待排序陣列

len :待排序陣列長度

*/void insertsort(int p,int len)

p[pos + 1] = cur; //將待排序元素插入陣列中

}}

2. 堆排序

#define int_max  0x7fffffff

#define int_min (0-int_max)

/* 最大堆排序

a :待排序陣列

s : 父節點

len : 需要排序的堆長度

*/void heapadjustmax(int a,int s,int len)//一次篩選的過程

else

break;

}}/*最小堆排序*/

void heapadjustmin(int a,int s,int len)//一次篩選的過程

else

break;

}}/*

a : 待排序陣列

n : 陣列長度

*/void heapsort(int a,int n)

for(i = n;i > 1;i--) //末尾向前移動

}

3. 快速排序

/**************************快速排序法***********************************/

/* a :待排序陣列

left:左邊界

right:右邊界

*/void quicksort(int a,int left,int right)

; int i;

int length = sizeof(num)/sizeof(num[0]);

// insertsort(num,length); //插入排序

// heapsort(num,length); //堆排序

quicksort(num,0,length-1);

for(i=0;i < length;i++)

printf("%d\t",num[i]);

return 0;

}

插入排序,快速排序,堆排序,歸併排序

插入排序 void insert sort int arry,int length 快速排序 int quick adj int arry,int low,int high else if arry high low 2 arry low arry high low 2 arry high arry...

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

設待排序陣列為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 ...

插入排序 合併排序 堆排序和快速排序

插入排序 時間複雜度o n2 param array原地排序演算法 public void insertsort int array array position present 合併排序 o nlogn param array param left 第乙個索引 param right 最後乙個索引...