java基礎知識六 排序

2021-08-01 16:50:53 字數 1361 閱讀 1649

排序方式

1. 氣泡排序

描述: 氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。

快速排序

快速排序

演算法思想:基於分治的思想,是氣泡排序的改進型。首先在陣列中選擇乙個基準點(該基準點的選取可能影響快速排序的效率,後面講解選取的方法),然後分別從陣列的兩端掃瞄陣列,設兩個指示標誌(lo指向起始位置,hi指向末尾),首先從後半部分開始,如果發現有元素比該基準點的值小,就交換lo和hi位置的值,然後從前半部分開始掃秒,發現有元素大於基準點的值,就交換lo和hi位置的值,如此往復迴圈,直到lo>=hi,然後把基準點的值放到hi這個位置。一次排序就完成了。以後採用遞迴的方式分別對前半部分和後半部分排序,當前半部分和後半部分均有序時該陣列就自然有序了。 

排序過程:

選擇排序:

1、基本思想:在要排序的一組數中,選出最小的乙個數與第乙個位置的數交換;然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後乙個數比較為止。

2、例項

插入排序

1、基本思想:每步將乙個待排序的記錄,按其順序碼大小插入到前面已經排序的字序列的合適位置(從後向前找到合適位置後),直到全部插入排序完為止。

2、例項

希爾演算法

1、基本思想:

先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄「基本有序」時,再對全體記錄進行依次直接插入排序。

2、操作方法:

選擇乙個增量序列t1,t2,…,tk,其中ti>tj,tk=1;

按增量序列個數k,對序列進行k 趟排序;

每趟排序,根據對應的增量ti,將待排序列分割成若干長度為m 的子串行,分別對各子表進行直接插入排序。僅增量因子為1 時,整個序列作為乙個表來處理,表長度即為整個序列的長度。

希爾排序的示例:

歸併排序

基本思想:

歸併(merge)排序法是將兩個(或兩個以上)有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。

歸併排序示例:

合併方法:

設r[i…n]由兩個有序子表r[i…m]和r[m+1…n]組成,兩個子表長度分別為n-i +1、n-m。

1. j=m+1;k=i;i=i; //置兩個子表的起始下標及輔助陣列的起始下標

2. 若i>m 或j>n,轉⑷ //其中乙個子表已合併完,比較選取結束

3. //選取r[i]和r[j]較小的存入輔助陣列rf

如果r[i]

實驗六 排序綜合

氣泡排序 1 定義順序表的儲存結構 2 在順序表上實現氣泡排序 3 將普通的氣泡排序進行多次改進以提高排序速度,並用大量資料測試其速度的提高。快速排序 1 定義順序表的儲存結構 2 在順序表上實現快速排序 3 用大量的資料測試最好 最壞和平均情況下的排序速度。堆排序 1 定義順序表的儲存結構 2 在...

六 排序的有關操作

一 實驗目的 1 掌握常見的排序演算法的思想及其適用條件。2 掌握常見的排序演算法的程式實現。二 實驗儀器及環境 pc計算機 windows xp作業系統 visual c 6.0 給出n個學生的考試成績表,每條資訊由姓名和分數組成,試設計乙個演算法 按分數高低次序,列印出每個學生在考試中獲得的名次...

資料結構 實驗六 排序

本次實驗實現排序中的直接插入 氣泡排序 快速排序 簡單選擇排序 堆排序等排序演算法。下面放一下自己的 include include include datahead.h define maxsize 20typedef intkeytype typedef struct redtype typed...