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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【排序】几种简单的排序(冒泡、选择、插入)(一)

發布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【排序】几种简单的排序(冒泡、选择、插入)(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PAT【甲級】的相關要求:

? ? ?在達到乙級要求的基礎上,還要求:

  • 具有充分的英文閱讀理解能力;
  • 理解并掌握基礎數據結構,包括:線性表、樹、圖;
  • 理解并熟練編程實現經典高級算法,包括哈希映射、并查集、最短路徑、拓撲排序、關鍵路徑、貪心、深度優先搜索、廣度優先搜索、回溯剪枝等;
  • 具備較強的問題抽象和建模能力,能實現對復雜實際問題的模擬求解。
  • 所以需要掌握等能力也包括:線性表、樹、圖、哈希映射、并查集、最短路徑、拓撲排序、關鍵路徑、貪心、深度優先搜索、廣度優先搜索、回溯剪枝等十幾種算法能力。在PAT【乙級】中最難到排序算法,所以先從排序算法開始學習。

    1.1 冒泡排序

    算法步驟:

  • 比較兩個相鄰的元素,如果第一個元素比第二個元素大,那么交換兩個元素;
  • 對每一對相鄰的元素做同樣的工作,從開始第一對到結尾最后一對,這步做完后,最后的元素會是最大的數;
  • 針對所有元素重復以上步驟,除了最后一個數;
  • 持續每次對越來越少的元素重復上述步驟,直到沒有任何一對數字需要比較。
  • 代碼實現:

    void BubbleSort(int arr[],int n){for(int i=0;i<n;i++){ //排序的趟數,也可以n-1for(int j=0;j<n-1-i;j++){ //元素比較次數if(arr[j]>arr[j+1]){ //如果前一個元素比后一個元素大,交換兩個元素int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}} }

    ?1.2 選擇排序

    算法步驟:

  • 首先在未排序序列中,找到最小(大)的元素,存放到排序序列的起始位;
  • 再從剩余的排序序列中繼續尋找最小(大)的元素,存放到已排序序列的末尾;
  • 重復第2步,直到所有的元素均排序完畢。
  • 代碼實現:

    void SelectSort(int arr[],int n){for(int i=0;i<n-1;i++){int min=i; //記錄最小元素的下標for(int j=i+1;j<n;j++){if(arr[j]<arr[min]){min=j; //把最小值的下標賦值給找到的更小的值的下標}}int temp=arr[i];arr[i]=arr[min];arr[min]=temp;} }

    1.3 插入排序

    算法步驟:?

  • 將待排序序列的第一個元素看作第一個有序序列,把第二個元素到最后一個元素看做未排序序列;
  • 從頭到尾掃描未排序序列,將掃描到的每個元素插入有序序列的適當位置,如果插入的元素與有序序列找那個的每個元素相等,則將待插入元素插入到相等元素的后面。
  • 代碼實現:

    void InsertSort(int arr[],int n){for(int i=1;i<n;i++){ //n-1排序int temp=arr[i],j=i;while(j>0&&temp<arr[j-1]){arr[j]=arr[j-1];j--;}arr[j]=temp;} }

    ?

    總結

    以上是生活随笔為你收集整理的【排序】几种简单的排序(冒泡、选择、插入)(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

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