day 16 C 各種排序

2021-08-07 07:24:29 字數 3157 閱讀 7811

#include #include using namespace std;

/*todo:直接插入排序

時間複雜度o(n^2)

最好情況:有序,o(n)

最差情況:到序,o(n^2)

空間複雜度o(1)

穩定性 穩定

*/vectorstraightinsertionsort(vectorarray)

array[j + 1] = temp;

}return array;}/*

todo:希爾排序

時間複雜度 與希爾增量有關係

空間複雜度o(1)

穩定性 不穩定

*/vectorshellsort(vectorarray)

array[j + step] = temp;

}step = step / 2;

}return array;}/*

todo:簡單選擇排序

時間複雜度o(n^2)

最好情況:有序,o(n^2)

最差情況:到序,o(n^2)

空間複雜度o(1)

穩定性 不穩定

*/vectorselectsort(vectorarray)

}if (k != i)

}return array;}/*

todo:堆排序

時間複雜度o(nlgn)

最好情況:o(nlgn)

最差情況:o(nlgn)

空間複雜度o(1)

穩定性 不穩定

*/void heapbuild(vector&array, int root, int size)

if (array[m] > array[root])

}}vectorheapsort(vectorarray)

for (int last = size - 1; last > 0; last--)

return array;}/*

todo:氣泡排序

時間複雜度o(n^2)

最好情況:有序,o(n)

最差情況:到序,o(n^2)

空間複雜度o(1)

穩定性 穩定

*/vectorbubblesort(vectorarray)

}if(!exchangeflag)

}return array;}/*

todo:快速排序

時間複雜度o(n*logn)

最好情況:劃分得很均勻,o(n*logn)

空間複雜度o(1)

穩定性 穩定

*/void quicksort(vector&array, int start, int end)

int first = start;

int last = end;

int key = array[first];

while (last > first)

array[first] = array[last];

while (last > first && array[first] <= key)

array[last] = array[first];

}array[first] = key;

quicksort(array, start, first - 1);

quicksort(array, first + 1, end);

return;}/*

todo:歸併排序

時間複雜度o(nlogn)

最好情況:o(nlogn)

最差情況:o(nlogn)

空間複雜度o(n)

穩定性 穩定

*/void merge(vector&array, vector&arraytemp, int start, int mid, int end) else

}while (i <= mid)arraytemp[k++] = array[i++];

while (j <= end)arraytemp[k++] = array[j++];

for (int i = start; i <= end; i++)

}void mergesort(vector&array, vector&arraytemp, int start, int end) }/*

todo:基數排序

穩定性 穩定

r:關鍵字的基數,d代表長度,n代表關鍵字的個數

*/int maxnumofdigital(vectorarray)

}return num;

}void radixsort(vector&array)

for (int j = 0; j < size; j++)

radix *= 10;

}}void print(string str, vectorinput)

cout << endl;

}int main() ;

vectorres;

res = straightinsertionsort(array);

print("直接插入", res);

res = shellsort(array);

print("希爾排序", res);

res = selectsort(array);

print("選擇排序", res);

res = heapsort(array);

print("堆 排 序", res);

res = bubblesort(array);

print("氣泡排序", res);

vectorarraytemp = array;

quicksort(arraytemp, 0, arraytemp.size() - 1);

print("快速排序", res);

arraytemp = array;

vectorarraytemp2(array.size());

mergesort(arraytemp, arraytemp2, 0, arraytemp.size() - 1);

print("歸併排序", res);

arraytemp = array;

radixsort(arraytemp);

print("基數排序", arraytemp);

return 0;

}

day 15 golang各種排序

package main import fmt todo 直接插入 func straightinsertionsort slice int slice j 1 temp fmt.println 直接插入 slice return todo 希爾排序 func shellsort slice int...

C 各種排序演算法

public class sorter 插入排序法 public static void insertionsort int list list j t 選擇排序法 public static void selectionsort int list int t list min list min l...

C 各種排序方法

c c 實現直接插入排序 includeusing namespace std int main int k sizeof a sizeof a 0 int j for int i 1 i 0 a j temp j a j 1 temp 此處就是a j 1 temp for int f 0 f歸併排...