各種排序演算法的C 實現

2021-06-27 12:04:39 字數 2226 閱讀 8191

#include #include #include #include #include #include using namespace std;

void bubble(vector&a) //氣泡排序}}

}void insert(vector&a) //插入排序

}void shellsort(vector&a)//希爾排序

}int mypartition(vector&a, int p, int r);

void quicksort(vector&a, int i, int r)//演算法導論的快速排序

}int mypartition(vector&a, int p, int r)

}swap(a[i + 1], a[r]);

return i + 1;

}templatevoid percdown(vector&a, int i, int n);

templatevoid headpsort(vector&a)//堆排序

}inline int leftchild(int i)

templatevoid percdown(vector&a, int i, int n)

a[i] = tmp;

}templatevoid mergesort(vector&a, vector&thearray, int left, int right);

templatevoid mergesort(vector&a)//歸併排序

templatevoid mergesort(vector&a, vector&thearray, int left, int right)

}templatevoid mymerge(vector&a, vector&thearray, int leftpos, int rightpos, int rightend)

while(leftpos <= leftend)

thearray[tmppos++] = a[leftpos++];

while(rightpos <= rightend)

thearray[tmppos++] = a[rightpos++];

for(int i = 0; i < numelements; ++i, --rightend)

a[rightend] = thearray[rightend];

}templatevoid insertionsort(vector&a, int left, int right)//插入排序

}templatevoid my_quicksort(vector&a, int left, int right);//資料結構與演算法分析的快速排序

templatevoid my_quicksort(vector&a)

templateconst t& median3(vector&a, int left, int right)

templatevoid my_quicksort(vector&a, int left, int right)

while(--j,pivot < a[j]){}

if(i < j)

swap(a[i], a[j]);

else

break;

}swap(a[i], a[right - 1]);

my_quicksort(a, left, i - 1);

my_quicksort(a, i + 1, right);

}else

}templateclass pointer

bool operator < (const pointer& rhs) const

t* comp() const

t operator * () const

private:

t *pointee;

};templatebool operator != (const pointer&lhs, t* rhs)

templateint operator - (const pointer&lhs, t* rhs)

templatevoid largeobjectsort(vector&a)//通過指標排序

my_quicksort(a);

for(i = 0; i < a.size(); ++i)

if(p[i] != &a[i])

a[j] = tmp;

p[j] = &a[j];

}}int main()

各種排序演算法C 實現

各種排序演算法的實現 交換函式 void swap int list,int low,int high 小於函式 bool lt const int low,const int high 插入排序 穩定 原理 插入排序逐個處理待排序的記錄。每個新記錄與前面已排序的子串行進行比較,將它插入到子串行中正...

各種排序演算法C 實現

include include include using namespace std 插入排序 void insertsort int num,int len 氣泡排序 void bubblesort int num,int len if flag break 選擇排序 void selectso...

各種排序演算法的C 實現

最近有空,寫了常見的幾種排序演算法的c 實現,包括改進版本的氣泡排序,簡單選擇排序,直接插入排序,快速排序,堆排序。1 改進版本的氣泡排序 改進版本的氣泡排序 void swapdata vector l,int i,int j void sortdata vector l,int length i...