日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

排序(基本概念及分类,直接插入排序和希尔排序)

發(fā)布時間:2023/11/30 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排序(基本概念及分类,直接插入排序和希尔排序) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

排序的概念

排序:所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。

穩(wěn)定性:假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次
序保持不變,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,則稱這種排
序算法是穩(wěn)定的;否則稱為不穩(wěn)定的。兩個數相等時,第一個數排序前在另外一個數之前,拍完序之后還在另外一個數之前。

內部排序:數據元素全部放在內存中的排序。

外部排序:數據元素太多不能同時放在內存中,根據排序過程的要求不能在內外存之間移動數據的排序。

常見的幾大類排序


基數排序,數據約束比較明顯,這七種排序比較通用

插入類排序

直接插入排序是一種簡單的插入排序法,其基本思想是:把待排序的記錄按其關鍵碼值的大小逐個插入到一
個已經排好序的有序序列中,直到所有的記錄插入完為止,得到一個新的有序序列

每次遍歷到一個數,找到前面小于等于它時候的位置

因為前面已經排好的全部時有序數列,最大的數已經時有序數列中最后的那個數如果正好和前一個數相等或者大于前一個數,則直接end+1回到待排序數的下標,等于keyi跳到下一個數繼續(xù)判斷如果小于的話,往后移動,則從end下標開始,遍歷整個有序數列,找到key>某個數的時候,直接讓end+1=key,原來的end+1位置的數已經移動到end+2位置所以直接讓直接讓end+1=key,完成插入,如果end=-1表示,有序數列中最小的數都比key小,則end+1下標回到0,數組第一個元素的位置就是key


希爾排序為了解決直接插入排序的一些缺點,希爾排序,通過分組的方法,讓數據在每次進行直接插入排序的時候都是接近有序的。對直接插入排序進行更改。

以前直接插入時,end+1,其實就是希爾排序中分組間隔為一時候的情況 現在,有分組間隔,所以每回在組內搬運元素,每回end+分組間隔gap就行每個小組排完序后數組接近有序,分組間隔減一,再排序,最后一次插入排序,整個數組接近有序 最后一次插入排序,整個數組接近有序,直接插入最快

總結

以上是生活随笔為你收集整理的排序(基本概念及分类,直接插入排序和希尔排序)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。