二分排序和查詢

2021-07-08 20:58:38 字數 846 閱讀 1735

題目:首先產生隨機數,再進行快速排序,再進行二分查詢。

#include #include #include void quiksort(int a,int low,int high)

a[i] = a[j];

while((a[i] <= temp) && (i < j))

a[j]= a[i];

}a[i] = temp;

quiksort(a,low,i-1);

quiksort(a,j+1,high);

}else

}int search(int x, int v, int n)

else if(x > v[mid])

else

} return -1;

}int main()

int location;

int number ;

quiksort(arry,0,99);//隨機數先進行排序

for(i=0;i<100;i++)

printf("\n");

printf("請輸入你要查詢的數字");

scanf("%d",&number);

location = search(number, arry, 100);

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

return 0;

}

執行結果:

心得與體會:

二分查詢比較容易理解,就是折半查詢法,所以要求資料必須是有序數列。不斷比較中間值。

快速排序是應用了遞迴,首先確定乙個關鍵資料,再把比他大的放到後面,比他小的放到前面,再分別對這兩部分進行同樣的操作。

二分排序(java)

基本思想就是 將待排序元素分成大小大致相同 的兩個子集合,分別 對兩個子集合進行排序,最終將排好序的子集合合併成所要求的排好序的集合。package com.suanfa 二分排序 author administrator public class merge 合併陣列 public void co...

演算法 二分排序

二分排序這個詞是我在面試中遇到的,當時第一反應是二分查詢,然後被打斷,是二分排序演算法,最終才了解到,二分排序就是我們熟知的歸併排序。它又稱二路排序。首先說一下歸併的思想 先將一組數列,數列中含有n個元素,假設將每乙個元素看成是乙個有序的數列,就是n個有序的子串行,每個子串行的長度為1,然後倆倆合併...

二分排序演算法

bool check int x 檢查x是否滿足某種性質 區間 l,r 被劃分成 l,mid 和 mid 1,r 時使用 intbsearch 1 int l,int r return l 區間 l,r 被劃分成 l,mid 1 和 mid,r 時使用 intbsearch 2 int l,int ...