#include/*演算法只是比較了元素為整數的內容.大部分的排序只是做了簡單的測試.僅供參考.*/
void swap(int *a , int *b)
bool less(int a, int b)
//對內部中的元素先找到k值,然後分兩塊
int partition(int *r, int lo, int hi)
while(j>i &&r[i]i)
} r[i] = temp;
}return i;
}//1.快速排序,也是把陣列分成兩個陣列,當兩個陣列有序的時候,整個陣列的有序
void quicksort(int *r, int lo, int hi)
//快速排序測試
void testquicksort()
; int len = sizeof(unorder)/sizeof(int);
quicksort(unorder, 0, len-1);
for(int i =0 ;i< len;i++)
printf("%d ", unorder[i]);
}//2.冒泡本質上是一種交換排序
void buble_sort(int *r, int n) }
if(flag == 0)
return ;
}}//二路歸併,
void merge(int *r,int *ch, int lo,int mid, int hi)
int i =lo; int j = mid+1;
printf("start %d, start %d \n",i,j);
for(int k = lo; k <= hi; k++)
}/** 3.二路歸併排序
* 把整個陣列分成子陣列,對子陣列排序後,將有序的子陣列歸併已將整個陣列排序
* */
void mergersort(int *r,int *temparray ,int lo, int hi)
void testmergesort()
; //5,41,3,9,44,21,65,
int len = sizeof(unorder)/sizeof(int);
int *temparray = new int(len);
mergersort(unorder, temparray, 0, len-1);
for(int i =0 ;i< len;i++)
printf("%d ", unorder[i]);
delete temparray;
}//基於插入排序的快速排序演算法
/*4.shell排序是不穩定的,增量要求沒有除1外的公因子.
* */
void shellsort(int *r, int n)
r[j+h] = temp;
} h = h/3;
}}//5.選擇排序
void selectsort(int *r, int n)
r[j+1] = temp; //放在當前位置
}}/*
class sortcompare
void random
}*/
//測試插入排序
void testinsert()
; int n = sizeof(r)/sizeof(int);
insertsort(r, n);
for(int i =0 ;i=1; i--)
//進行排序
for(int j = n; j>=2; j--)
}void testheapsort()
; int n = sizeof(r)/sizeof(int);
heapsort(r, 6);
for(int i =0 ;i}//8.計數排序
//9.基數排序:桶排序每次以0-9排序,從個位到最高位
//10.折半插入排序:對乙個有序的序列進行折半查詢然後插入
//時間複雜度:快排,希爾排序,歸併排序和堆排序,是nlog(n) (快些以nlog(n) 歸隊)
//而空間複雜度:快速排序是o(log(n)), 歸併排序是o(n), 基數排序是o(r_d),其他都是o(1);// 當然直接插入容易變成o(n),而冒泡最好是o(n).以上兩個是"容易插","起的好"
//其他細節:1.經過一趟排序可以達到最後位置:交換類(冒泡,快速), 選擇類(堆排序, 簡單選擇排序).
// 2.排序方法的元素次數和原始序列無關-----簡單選擇排序和折半插入排序
// 3.排序方法與排序趟數和原始序列有關-----交換類排序(冒泡,快速)
//穩定性來說:快速排序, 希爾排序, 選擇排序, 堆排序是不穩定的,其他穩定.(心情不穩定,快些選堆朋友聊天)
int main(int argc, char **argv)
常見的排序演算法總結
平時一直做專案,業務邏輯,對演算法這塊逐漸有了生疏 今天有空總結一下排序演算法 1 氣泡排序 氣泡排序的原理就是兩兩相比,從小到大的話前面比後面大就交換,從大到大的話前面比後面小就交換,比如有一組數 1,10,5,3,2 如何對它做排序 比如從小到大 第一步 1,10,5,3,2 源資料 1,10,...
常見的排序演算法總結
氣泡排序最常見版 void bubblesort int array,size t len int main bubblesort array,6 for size t i 0 i 6 i cout endl void bubblesort int array,size t len int main...
常見的排序演算法總結
1.氣泡排序 就像冒泡一樣,從頭對比相鄰的兩個,大的 或者小的 就交換到後面,一直到序列有序。時間複雜度最壞,平均o n 2 最好的時候是初始序列有序,第一趟後就不在發生交換,停止排序時間複雜度o n 空間複雜度為o 1 a 11 2,41 7,22 80,67 1,0.1,88 def bubbl...