排序演算法Day1

2021-08-09 00:15:37 字數 1221 閱讀 5467

#include "mysort.h"

#include

#include

#include

#include

#include

#include

#include

using namespace std; //插入排序 時間複雜度 平均哦o(n^2) 完全有序時o(n) 空間複雜度o(1) 穩定 //思想:把待排序列分為有序序列和無序序列,然後將無序列的元素插入到有序序列,規則是從後往前找 //第乙個比我小的,將比我大的往後移,找到後插入到第乙個比我小的後面 void insertsort(int *arr,int len) else } arr[j+1]=tmp; } } //希爾排序 時間複雜度 o(n^1.3 ~ n^1.5) 空間複雜度 o(1) 不穩定 //思想:對待排序列進行分組,利用插入排序越有序越快的特性,多次插入排序,最後必定只剩乙個組(全部序列) void shell(int *arr,int len,int gap) else } arr[j+gap]=tmp; } } void shellsort(int *arr,int len) ; for(int i=0;i

arr[j+1]) } } } //快速排序 平均時間複雜度o(nlogn) 最壞的情況下 o(n^2) 空間複雜度(logn) 不穩定 //思想:選擇基準,定義兩個指標low,high,將比基準大的移到基準後面,比基準小的移到基準前面 int partition(int *arr,int start,int end) if(low == hign) else while(low

start+1) if(index

=tmp) if(low == hign) else while(low

>1); if(low

arr[hign]) if(arr[low]>arr[hign]) if(arr[mid]>arr[low]) } return arr[low]; } int partition(int *arr,int start,int end) if(low == hign) else while(low

=key) hign--; } arr[low]=arr[hign]; while(low

right && arr[i]!=key) quicksort3(arr,first,low-leftlen-1); quicksort3(arr,low+rightlen+1,last); }

day 1 快速排序

include using namespace std void qsort int a,int low,int high int first low int last high int key a first 用字表的第乙個記錄作為樞軸 while first last a first a las...

演算法營day1

題目描述 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路1 充分考慮到該二維陣列的特點,每一行是公升序的,每一列也是公升序的。通過target和矩陣右上...

Day1 冒泡演算法 1

bubble sort 背後的想法非常簡單,我們檢視陣列中相鄰的成對元素,一次檢視一對。如果第乙個元素大於第二個元素,則交換它們的位置,否則將它們繼續移動。def bubble sort our list for i in range len our list 1 if our list i our...