起泡排序優化演算法 二分查詢返回秩

2021-10-07 10:05:30 字數 1214 閱讀 6687

###1.無序向量排序

###2.有序向量插值找位置

###3.有序向量查詢目標元素位置

1.我們常常會遇到這樣乙個問題,對一隊無序的數字該怎樣合理的排序呢?

比如說有 1 3 6 4 8 這五個數。如何利用程式將它排序呢?

有些同學可能學過起泡排序。

for(i=0;ia[j])

}}

這種就是單純的遍歷式的起泡排序,在未學習起泡排序前是可以用的,在學習資料結構後,我們知道它的時間複雜度是o(h^2)量級的,內部存在大量的重複。

下面未大家介紹改進後的起泡排序。

int bubble(int *a,int lo,int hi)

} hi=last;

return last;//將最後一次交換返回,[last,hi]之間已排好

}void bubblesort(int *a,int lo,int hi)

以下為完整的執行除錯**

#include using namespace std;

#define p 100000

int bubble(int *a,int lo,int hi)

} hi=last;

return last;//將最後一次交換返回,[last,hi]之間已排好

}void bubblesort(int *a,int lo,int hi)

int main()

bubblesort(b,0,n);

for(i=0;i這個函式的功能就是將返回乙個不大於目標值x的最大秩,也就是在身高順序的大前提下將他排在身高一樣的同學的最後面。

3.以上是插值時的排序問題,如果僅僅是查詢呢,比如老師拿了乙份身高名單,需要查詢班上是否有該身高的同學,有則返回。

同理可用二分查詢

int fbinsearch(int *a,int x,int lo,int hi)

} hi=last;

return last;//將最後一次交換返回,[last,hi]之間已排好

}void bubblesort(int *a,int lo,int hi)

int main()

bubblesort(b,0,n);

for(j=0;j>y>>x;

if(binsearch(b,y,0,n)!=-1)

{cout《以上就是針對實際問題的解答。

排序演算法 二分查詢

1氣泡排序 相鄰比較,大的放右邊,最大值在索引最大處 for int i 0 ilength 1 i 2.選擇排序 第乙個元素拿出來,與該元素右邊的元素按順序比較,小的元素放左邊,第一比較結束,最小索引出現最小值 第二個元素拿出來,重複第一元素的步驟。for int i 0 ilength 1 i ...

二分查詢排序

static final int n 15 static void quicksort int arr,int left,int right 快速排序演算法 if ltemp rtemp ltemp if leftx high mid 1 else low mid 1 return 1 未找到 pu...

排序 二分查詢

實現歸併排序 快速排序 插入排序 氣泡排序 選擇排序 堆排序 選做 完成leetcode上的返回滑動視窗中的最大值 239 這是上一期第三天的任務進行保留 涉及佇列可以對第二天進行整理複習 程式設計實現 o n 時間複雜度內找到一組資料的第 k 大元素 def insert sort alist n...