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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

求无序序列每个元素最接近的值

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 求无序序列每个元素最接近的值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、問題描述

給一個n個元素的線性表A,對于每個數Ai,找到它之前的數中,和它最接近的數。

即對于每個i,求?Ci = min{ |Ai -Aj | ?| 1<= j < i}


1.2算法分析

有兩種思路可以解決上訴問題:

(1) 遍歷整個線性表,對每個元素 A[i] ,遍歷 A[0] - A[i-1] , 求出與 A[i] 絕對值最小的元素。這種方法的效率為O(n^2)。


(2)先對線性表 A 進行排序, 將結果構造成雙向鏈表 L 。反向遍歷 A,將每個元素 A[i] , 比較 A[i] - A[i-1] ?和A[i+1] - A[i] ,取兩者中與 A[ i ] 更接近的,即是 A[ i ] 之前的數中與 A[ i ]最接近的。然后 將A[i] 從L中刪去。則雙向鏈表中剩下的元素就是 A[i] 前面的元素。這種方法的效率可以達到O(nlogn)。


1.3 算法過程圖解




1.4 思路2算法實現

首先,需要的一個雙向鏈表作為輔助,定義雙向鏈表結構如下:

struct LNode{struct LNode* next;struct LNode* prev;int key; };
給鏈表添加一些操作,來支持解決問題:

#include <stdio.h> #include <malloc.h> #include "lcl.h"//從數組里創建鏈表 struct LNode* create_list_from_array( int* array,int array_length) {struct LNode* head,*prev_node=NULL,*node;int i=0;for(i=0;i<array_length;i++){node=(struct LNode*)malloc(LEN);node->key=array[i];node->next=NULL;node->prev=prev_node;if(prev_node==NULL) //創建第一個結點時執行 {head=node; }else{prev_node->next=node;} prev_node=node;}return head; }//求與node結點值最接近的結點,并打印 void get_near(struct LNode* node) {int a=0,b=0,c=0,ab=0,bc=0,near;if(node->prev==NULL&&node->next==NULL) {printf("no other num before %d \n",node->key);return;}if(node->prev==NULL){printf("brefore and the most nearest %d num is:%d\n",node->key,node->next->key);return; }if(node->next==NULL){printf("brefore and the most nearest %d num is:%d\n",node->key,node->prev->key);return; }a=node->prev->key;b=node->key;c=node->next->key;ab=b-a;bc=c-b;near=ab>bc?c:a;printf("brefore and the most nearest %d num is:%d\n",node->key,near); }//從鏈表刪除值為n的一個元素 struct LNode* delete_last_n(struct LNode* list,int n) {struct LNode* head=list,*node=list,*prev,*curr,*next;while(node!=NULL&&node->key<n){node=node->next;}prev=node->prev;curr=node;next=node->next;get_near(node);if(prev==NULL&&next==NULL){free(curr);return NULL; }if(prev!=NULL){prev->next=next;}else{list=next;}if(next!=NULL){ next->prev=prev;}else{prev->next=NULL;}free(curr);return list; }

然后,需要一個排序算法對線性表進行排序,這里使用到歸并排序:

extern void print_array(int* array,int n); //歸并排序 void merge_array(int* array,int p,int q,int r){int l1=q-p+2,l2=r-q+1;int A[l1],B[l2]; //多加 1為最后一個元素賦最大值留著 int i=0,j=0,k=0;for(i=p,j=0;i<=q;i++,j++){A[j]=array[i];}A[j]=MAX_NUMBER;for(i=q+1,j=0;i<=r;i++,j++){B[j]=array[i];}B[j]=MAX_NUMBER;i=0,j=0,k=0;for(k=p;k<=r;k++){if(A[i]>B[j]){array[k]=B[j];j++; }else{array[k]=A[i];i++; }} }void merge_sort(int* array,int p,int r){ //歸并排序,p為計數起點,一般是0,r為數組最后序號,為n-1 if(p<r){ int q=p+(r-p)/2;merge_sort(array,p,q);merge_sort(array,q+1,r);merge_array(array,p,q,r);} }


關鍵代碼:

//初始化并運行程序 void init(int array_length) { int array[array_length],array2[array_length],i=0;struct LNode* list;get_iarray_scf(array,array_length); //獲取輸入數組 copy_array(array,array2,array_length); //保存初始數組 print_array(array,array_length); //對數組排序 merge_sort(array,0,array_length-1);//將排序結果創建雙向鏈表 list=create_list_from_array(array,array_length);// 從后往遍歷輸入數組,依次從雙向鏈表刪除 for(i=array_length-1;i>=0;--i){list=delete_last_n(list,array2[i]);} }
附錄:

1、代碼

2、參考教程







創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的求无序序列每个元素最接近的值的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美三日本三级少妇三级99观看视频 | 一道本av在线 | 丝袜操| 色噜噜综合网 | 亚洲女人毛茸茸 | 国产伦精品一区二区三区高清 | 亚洲自拍偷拍色图 | 日本人体视频 | 亚洲色图图 | 欧美日韩国产大片 | 日日摸日日碰夜夜爽av | japanese av在线 | 欧美三级黄色 | 亚洲无圣光| 黑人与日本少妇 | 在线观看免费av网址 | 夫妻自拍偷拍 | 精品不卡一区二区 | 国产69精品久久久久999小说 | 黄色在线视频观看 | 成人a级免费视频 | 无码人妻丰满熟妇区五十路百度 | 成年人免费在线观看视频网站 | 久久老女人 | 国产区123| 国产aaa毛片 | xxx性日本| www九九热 | 久久一级片 | 欧美高清精品一区二区 | 免费在线观看的黄色网址 | av影院在线观看 | 亚洲av无码国产精品永久一区 | 无码无遮挡又大又爽又黄的视频 | 欧美变态口味重另类在线视频 | 日韩福利在线视频 | 一区二区三区精品视频在线观看 | 好吊操这里只有精品 | 亚洲一区二区精品在线 | www.操| 91成人亚洲 | 四虎网站在线 | 久久精品在线视频 | 国产av无码专区亚洲av | 91成人免费电影 | 国产亚洲欧美在线视频 | 国产精品91一区 | 成人v片 | 午夜影院0606 | 国产精品久久一 | 午夜精品一区二区三区在线观看 | www在线看片| 久久久新| 日日舔夜夜摸 | 国产精品视屏 | 三级视频网站 | 精品免费在线观看 | 特黄特色大片免费视频大全 | 人体毛片 | 中文字幕无产乱码 | 极品色影视 | 欧美丝袜一区二区三区 | 免费淫片 | 午夜激情视频网站 | 免费久久av| 日韩精品一线二线三线 | 麻豆传媒在线视频 | 久久久国产精品一区 | 美女诱惑av | 日本美女毛片 | 婷婷一级片 | 免费毛片av| 免费黄色欧美 | 中文字幕av无码一区二区三区 | 老司机综合网 | 99这里只有精品 | 国产丰满大乳奶水在线视频 | 伊人影音 | 91福利网| 国产美女www爽爽爽 www.国产毛片 | 中文字幕成人在线视频 | 美人被强行糟蹋np各种play | 亚洲精品毛片av | av在线二区 | 色视频在线免费观看 | 国产精品无套 | 亚洲国产精品尤物yw在线观看 | 手机在线精品视频 | 国产欧美一区二 | 蜜臀av夜夜澡人人爽人人 | 成人毛片视频网站 | 小向美奈子在线观看 | 日日夜夜免费精品视频 | 野外吮她的花蒂高h在线观看 | 久久青青草原亚洲av无码麻豆 | 乱图区| 这里只有精品在线观看 | 黄色av电影在线观看 | 成年人在线观看 |