#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歸併排...