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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

排序(Sort)--【一】

發(fā)布時(shí)間:2023/11/30 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排序(Sort)--【一】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?????? 排序,對(duì)于大家再熟悉不過(guò)了吧。我們之前在學(xué)習(xí)c語(yǔ)言的時(shí)候接觸過(guò)的冒泡排序,選擇排序等。今天給大家介紹兩種新的排序。

1、直接插入排序


升序排列:將第一個(gè)數(shù)確定好,從下標(biāo)為1的數(shù)開(kāi)始插入,如果插入的數(shù)比前一個(gè)數(shù)大,就插入到前一個(gè)數(shù)后的位置。否則,將前一個(gè)數(shù)的位置后移,再與再往前的數(shù)比較,依次類推。

時(shí)間復(fù)雜度為:O(N*N)???????? 最好情況:O(N)

主要實(shí)現(xiàn)代碼(vs2013):

#pragma once#include<iostream>using namespace std;void InsertSort(int *a,size_t size){for(size_t i = 1; i < size; ++i){int end = i-1;int tmp = a[i];while(end >= 0){if(tmp < a[end]) //升序 //if(tmp > a[end]) //降序{a[end+1] = a[end];--end;}else{break;}}a[end+1] = tmp;}}void Display(int *a,size_t size){for(size_t i = 0; i < size; ++i){cout<<a[i]<<" ";}cout<<endl;}void TestInsert(){int a[] = {2,5,4,9,3,6,8,7,1,0};size_t size = sizeof(a)/sizeof(a[0]);InsertSort(a,size);Display(a,size);}
運(yùn)行結(jié)果:



2、希爾排序

?????? 當(dāng)在插入排序中,數(shù)據(jù)特別多時(shí),且不是有序的。這時(shí)采用插入排序就特別的慢。尤其是對(duì)于升序情況,所給的數(shù)據(jù)是降序,那么就需要每次挪動(dòng)數(shù)據(jù)。這就顯得效率比較低了。于是引入了希爾排序,將它們先排列的接近有序,再進(jìn)行插入排序就容易多了。


主要實(shí)現(xiàn)代碼(vs2013):

void ShellSort(int* a,size_t size) {int gap = size;int end = 0;int tmp = 0;while(gap > 1){gap = gap/3+1;for(size_t i = gap; i < size; ++i){end = i-gap;tmp = a[i];while(end >= 0){if(tmp > a[end]) //降序 //if(tmp < a[end]) 升序{a[end+gap] = a[end];end -= gap;}elsebreak;}a[end+gap] = tmp;}} }void Display(int *a,size_t size) {for(size_t i = 0; i < size; ++i){cout<<a[i]<<" ";}cout<<endl; }void TestInsert() {int a[] = {0,1,2,3,4,5,6,7,8,9};size_t size = sizeof(a)/sizeof(a[0]);ShellSort(a,size);Display(a,size); }
運(yùn)行結(jié)果:




總結(jié)

以上是生活随笔為你收集整理的排序(Sort)--【一】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。