ACM 8 2 再談排序與檢索

2021-09-20 06:06:04 字數 1817 閱讀 2220

歸併排序的過程本身是線性的,但是需要線性的輔助空間。

c#include #include #include using namespace std;

const int maxn =1000;

const int inf = 0x3f3f3f3f;

int a[maxn];

int t[maxn];

void merge_sort(int *a, int x, int y, int *t)

for(i = x; i < y; i++) a[i] = t[i];

}}int main()

; merge_sort(a, 0, 8, t);

for(int i = 0; i < 8; i++)

cout << endl;

return 0;

}

cint cnt = 0;

void merge_sort(int *a, int x, int y, int *t)

}for(int i = x ;i < y ;i ++) a[i] = t[i];

}}

整體排序之後部分排序。此處並非隨機劃分。

cvoid quicksort(int *a, int l, int r)

a[i] = x;

quicksort(a, l, i-1);

quicksort(a, i+1, r);

}}

c#include #include #include using namespace std;

const int maxn =1000;

const int inf = 0x3f3f3f3f;

int a[maxn];

int t[maxn];

int cnt = 0;

int k;

int quicksortfind(int *a, int l, int r)

a[i] = x;

if(l <= k && i-1 >= k)

return quicksortfind(a, l, i-1);

else if(i+1 <= k && k <= r)

return quicksortfind(a, i+1, r);

else

return x;

}return a[l];

}#define printarray(a, len) for(int i = 0 ;i < len; i++) cout << a[i] << " "; cout << endl;

int main()

; k = 4;

int temp = quicksortfind(a, 0, 7);

printarray(a, 8);

printf("%d\n", temp);

return 0;

}

cint bsearch(int *a, int x, int y, int v)

// 沒找到

return -1;

}

不再直接返回,在stl函式中包含這個演算法

cint bsearch(int *a, int x, int y, int v)

// 沒找到

return x;

}

STL 排序與檢索

新增在標頭檔案algorithm中,使用方法如 sort start,end 排序方法 int a 5 sort a,a 5 這是最簡單的sort方法,使用預設的排序方法公升序排列 sort a,a 5,cmp cmp為bool函式名,是自定義規則比較函式 自定義的cmp函式 bool cmp in...

STL初步 排序與檢索

e.g.現有n個大理石,每個大理石上寫了乙個非負整數。首先把每個數從小到大排序,然後回答q個問題。每個問題問是否有乙個大理石寫著某個整數x。如果是,要回答在哪個大理石上寫著x。排序後的大理石從左到右編號為1 n。solution 先排序,後查詢 關於排序 sort使用陣列元素預設的大小比較運算子進行...

c 排序與檢索函式

問題描述 現有n個大理石,每個大理石上寫了乙個非負整數 首先把各數從小到大排序 然後回答q個問題。每個問題問是否有乙個大理石寫著某個整數x,如果是,還要回答哪個大理石上寫著x。排序後的大理石從左到右編號為1 n。輸入大理石數量和需要回答問題數量,然後輸入大理石上的每個非負整數,接著輸入x 樣例輸入 ...