六種排序的C 實現

2021-04-30 15:35:44 字數 1679 閱讀 2434

class sortnum   

;  具體實現:

view plain

copy to clipboard

print?

#include "sortnum.h"

#include "iostream.h"

//// construction/destruction

//sortnum::sortnum()  

sortnum::~sortnum()  

//交換兩個元素

void sortnum::exchange(int& b,int& c)  

//輸出陣列所有元素

void sortnum::listout(int a,int n)  

//選擇排序

void sortnum::selectsort(int a,int n)  

}  //氣泡排序

void sortnum::bublblesort(int a,int n)  

}  }  //插入排序

void sortnum::insertsort(int a,int n)  

}  //基數排序

void sortnum::basesort(int a,int n)  

while((max%r)/tem !=0)//若最大的運算完為0.則整個基數排序結束

}  listout(a,n);  

tem *=10;  

r *=10;  

}  }  

//快速排序

void sortnum::quicksort(int a,int n,int left,int right)  

}while(i<=j);  

if(left//遞迴呼叫排序左右兩邊,級級深入

quicksort(a,n,left,j);  

if(right>i)  

quicksort(a,n,i,right);  

}  //歸併排序

//二路歸併   問題~~無法輸出詳細過程

void sortnum::merge(int *sr, int *tr, int i, int m, int n)else  

}  while (i<=m) tr[k++] = sr[i++];   // 將剩餘的 sr[i..m] 複製到tr

while (j<=n) tr[k++] = sr[j++];   // 將剩餘的 sr[j..n] 複製到tr

}//merge

void sortnum::msort( int *sr, int *tr1, int s, int t )else // else

} // msort

void sortnum::copy( int *s, int *t, int s, int t )  

void main()  

;//問題:陣列中了length怎麼解決

sortnum so;  

cout <<"原始資料"

//so.exchange(a[0],a[1]);//測試exchange方法

//so.listout(a,7);

cout <<"選擇排序型別:1.選擇,2.冒泡,3.插入,4.基數 5.快速 6.歸併"

cin >>n;  

int b[7];  

switch( n)  

}  

演算法的六種排序

一 選擇排序法 簡單選擇排序是最簡單直觀的一種演算法,基本思想為每一趟從待排序的資料元素中選擇最小 或最大 的乙個元素作為首元素,直到所有元素排完為止,簡單選擇排序是不穩定排序。for int i 0 i arr.length 1 i 簡單選擇排序通過上面優化之後,無論陣列原始排列如何,比較次數是不...

六種基本排序方式

package new03 public class demo4 sop 原序列的結果是 for int x nums sop n selectsort nums insertsort nums bubblesort nums quicksort nums shellsort nums heapso...

六種qsort排序方法

本文中排序都是採用的從小到大排序 一 對int型別陣列排序 int num 100 sample int cmp const void a const void b qsort num,100,sizeof num 0 cmp 二 對char型別陣列排序 同int型別 char word 100 s...