插入排序和快速排序

2021-09-26 23:07:46 字數 2210 閱讀 5420

//實現兩個個函式,輸入陣列和陣列個數,從小到大排序,要求使用函式模板。

//支援 int char float double long。

//(乙個函式使用快速排序法,乙個函式使用插入排序法)

templatevoid insertionsort(t *arr, const int count)

//更新pos,當pos不小於0就和下乙個間隔的數值再比較

pos -= gap;

}} gap = gap / 2;

} //gap==1,直接插入法

for (i = 1; i < count; ++i)

--pos;

} }return;

}templatevoid swap(t* a, t*b)

templatevoid qksort(t *arr, int begin, int end)

while (begin < end)

while (begin < end && (arr[end] >= key))

if (begin < end)

}//當前後指標重合後,交換基準值和開始的指標指向的元素

swap(&arr[begin], &arr[keyindex]);

int mid = begin;//begin就是中間值的下標

//對左邊區進行排序[begin,mid)

//對右邊區進行排序[mid+1,end]

qksort(arr, start, mid);

qksort(arr, mid + 1, keyindex);

return;

}templatevoid quicksort(t *arr, const int count)

//列印

templatevoid show(t *arr, const int count)

cout << endl;

}

#include"sort.h"

#include#include#includeusing namespace std;

int main(int argc, char* ar**)

switch (input)

}cout << "select the method of sort:<0.insertionsort or 1.quicksort>";

cin >> num;

if (0 == num)

else if (1 == num)

else

break;

} case 2:

}cout << "select the method of sort:<0.insertionsort or 1.quicksort>";

cin >> num;

if (0 == num)

else if (1 == num)

else

break;

} case 3:

}cout << "select the method of sort:<0.insertionsort or 1.quicksort>";

cin >> num;

if (0 == num)

else if (1 == num)

else

break;

} case 4:

}cout << "select the method of sort:<0.insertionsort or 1.quicksort>";

cin >> num;

if (0 == num)

else if (1 == num)

else

break;

} case 5:

}cout << "select the method of sort:<0.insertionsort or 1.quicksort>";

cin >> num;

if (0 == num)

else if (1 == num)

else

break;

} default:

break;

} }delete arr1;

delete arr2;

delete arr3;

delete arr4;

delete arr5;

return 0;

}

快速排序和插入排序

下面介紹用快速排序法和插入排序法來給乙個一維陣列排序 具體 實現如下 快速排序法 function quick sort arr 獲取陣列的長度 len count arr 如果陣列的 1,說明不許排序 if len 1 選擇第乙個元素作為標尺 base arr 0 初始化兩個陣列 left arr...

快速排序和插入排序

快排還是看之前的那篇部落格吧,這個寫的不實用 基於 資料結構與演算法分析 182頁,寫的快速排序。對於樞紐元的選擇使用三數中值分割法。include include define cutoff 3 using namespace std 三數中值分割方法 int media3 vector vecu...

氣泡排序,快速排序,插入排序

一 氣泡排序 大致分兩步 1 依次對比相鄰2個數字,前者比後者大就調換位置 2 重複第一步操作,直到所有數字都按順序排列 function bubblesort arr return arr 二 快速排序大致分三步 1 找基準 一般是以中間項為基準 2 遍歷陣列,小於基準的放在left,大於基準的放...