排序演算法整理

2021-10-08 04:50:31 字數 788 閱讀 5067

//2.後移元素,空出插入位置(插入位置下標為low或high+1)

for(j = i-1; j >= low; j--)

//3.插入元素 (此時low=high+1)

a[low] = current;

}};與直接插入排序相比,減少了元素的比較次數。每次迴圈,都是先找到插入位置,再來移動元素,而不是比較一次移動乙個元素。

一次迴圈比較log(n)次,則n次迴圈比較nlog(n)次。一次迴圈移動1~n次,則n次迴圈移動n平方次。

void swap(int &a, int &b)

void insertsort(int a, int n)

}if(flag == false)

} };

int partition(int a, int low, int high)

a[low] = pivot;//哨兵元素的最終存放位置

return low;

}void quicksort(int a, int low, int high)

};

排序 排序演算法整理

經常零零散散的用到排序演算法,將幾類常見的總結下來 時間複雜度o n 2 空間複雜度o 1 穩定排序 param arr public static void insersort int arr else arr j 1 tmp 氣泡排序 時間複雜度 o n 2 空間複雜度o 1 穩定排序 para...

排序演算法整理

template void cinsertsort mysort function compare template void cselectsort mysort function compare swap datas i datas id void cshellsort mysort funct...

排序演算法整理

先把常用排序演算法進行分類 插入排序 直接插入排序 折半插入排序 希爾排序 交換排序 氣泡排序 快速排序 選擇排序 簡單選擇排序 堆排序 歸併排序 基數排序 下面我們乙個乙個來看 1.直接插入排序 進行n 1趟排序,每趟把乙個元素插入到前面已經排好序的序列中,其時間複雜度為o n 並且由於判斷要插入...