亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? processor.cs

?? 這是我寫的并行計算的作業
?? CS
?? 第 1 頁 / 共 2 頁
字號:
            {
                Array.Copy(array2, j, result, k, array2.Length - j);
            }
            return result;
        }

        /// <summary>
        /// Partition the stored datas with main cells.
        /// </summary>
        public void Partition()
        {
            Logger.getInstance().debug(this.Name + " wait for the selection of main cells!");
            mainCellReady.WaitOne();
            Logger.getInstance().debug(this.Name + " begins to partition!");
            this.partitionFlags = new int[this.ProcessorNumbers];
            if (this.localData[0] > mainCell[0])
                this.partitionFlags[0] = -1;
            else
                this.partitionFlags[0] = 0;
            int i = 1;
            int j = 0;
            for (; i < this.partitionFlags.Length; i++)
            {
                for (; j < this.localData.Length; j++)
                {
                    if (this.localData[j] > mainCell[i - 1])
                    {
                        this.partitionFlags[i] = j;
                        break;
                    }
                }
                if (j == this.localData.Length)
                    this.partitionFlags[i] = this.localData.Length;
            }
            Logger.getInstance().debug(this.Name + " has finished the partition!");
            myGlobalChange.Release(this.ProcessorNumbers);
        }

        /// <summary>
        /// The processor thread will run this method.
        /// </summary>
        public void Run()
        {
            this.initlize();

            //local sort...
            Logger.getInstance().debug(this.Name + " : " + "begin to sort...");
            this.LocalSort();
            Logger.getInstance().debug(this.Name + " : " + "first sort is completed!");
            bool needToSortSamples = false;
            lock (syncObj)
            {
                if (SamplesNotHandled)
                {
                    needToSortSamples = true;
                    SamplesNotHandled = false;
                }
            }
            if (needToSortSamples)
            {
                Logger.getInstance().debug(this.Name + " is going to selected samples!");
                //get samples
                int[] samples = new int[this.ProcessorNumbers * this.ProcessorNumbers];
                for (int i = 0; i < this.ProcessorNumbers; i++)
                {
                    Processor p = (Processor)processors[i];
                    Array.Copy(p.GetSamples(), 0, samples, i * this.ProcessorNumbers, this.ProcessorNumbers);
                }
                Logger.getInstance().debug(this.Name + " begins to sort samples!");
                samples = this.Sort(samples);//sort samples
                //select main numbers
                Logger.getInstance().debug(this.Name + " begins to select main cells!");
                for (int i = 0; i < mainCell.Length; i++)
                {
                    mainCell[i] = samples[this.ProcessorNumbers * (i + 1)];
                }
                Logger.getInstance().debug("Main cells have be selected by " + this.Name + "!");
                mainCellReady.Release(this.ProcessorNumbers);
            }
            //partition the array
            this.Partition();
            //global change
            this.GlobalExchangeAndSort();
            //
            
        }

        public int[] Sort(int[] array)
        {
            int[] result = this.Sort(array, 0, array.Length);
            return result;
        }

        public int[] Sort(int[] array, int start, int length)
        {
            if (length < 0)
            {
                throw new ArgumentOutOfRangeException("Argument \"length\" must be greater than 0!");
            }
            if (start < 0 || start >= array.Length)
            {
                throw new ArgumentOutOfRangeException("Argument \"start\" is out of range!");
            }
            if (start + length > array.Length)
                length = array.Length - start;
            if (length > 4)
            {
                int[] a1 = Sort(array, start, length / 2);
                int[] a2 = Sort(array, start + length / 2, length - length / 2);
                a1 = this.MergeSort(a1, a2);
                return a1;
            }
            else
            {
                int[] result = new int[length];
                Array.Copy(array, start, result, 0, length);
                for (int i = 0; i < length; i++)
                {
                    int min = i;
                    for(int j = (i + 1); j < length; j++)
                    {
                        if (result[j] < result[min])
                        {
                            min = j;
                        }
                    }
                    if (min != i)
                    {
                        int temp = result[i];
                        result[i] = result[min];
                        result[min] = temp;
                    }
                }
                return result;
            }
        }

        #region Properties

        public string Name
        {
            get
            {
                return "Processor " + this.SegmentNumber.ToString();
            }
        }

        public static bool SamplesNotHandled
        {
            get
            {
                return mySamplesNotHandled;
            }
            set
            {
                mySamplesNotHandled = value;
            }
        }

        public int SegmentNumber
        {
            get
            {
                return mySegmentNumber;
            }
            set
            {
                this.mySegmentNumber = value;
            }
        }

        public int Start
        {
            get
            {
                return countPerProcessor * mySegmentNumber;
            }
        }

        public int Length
        {
            get
            {
                if (this.mySegmentNumber == (this.ProcessorNumbers - 1))
                {
                    return (this.myOriginalData.Length - this.Start);
                }
                else
                {
                    return countPerProcessor;
                }
            }
        }

        public int End
        {
            get
            {
                return (this.Start + this.Length);
            }
        }

        public int ProcessorNumbers
        {
            get
            {
                return processors.Length;
            }
        }

        public static int[] SortedDatas
        {
            get
            {
                return myGlobalSortedData.GetArray();
            }
        }

        public AutoResetEvent GlobalSortedDataOk;

        #endregion

        //
        private int mySegmentNumber;//This feilds represents the segment number of this processor.
        private AutoResetEvent mySamplesReady;//This is used to indicated wether samples are ready to be selected.
        private Semaphore myGlobalChange;//This is used to enable golobal exchanges.
        private int[] myOriginalData;//This is used to store the datas to be sored.
        private static MyArrayList<int> myGlobalSortedData; //This is used to store the datas sored finally.
        private int[] localData;//This is used to store the datas after the first sore.
        private int[] partitionFlags;//This is used to store the indexes of each partition that is divided by main cells.

        public static Processor[] processors;//All processors will be stored here.
        private static bool mySamplesNotHandled = true;//This feild will indicate whether samples has been sorted : true if sorted, false if not.
        private static object syncObj = new object(); //This is used to control exclusive access to some feilds of this class.(eg. SamplesNotHandled)
        private static int[] mainCell;//Main cells.
        private static Semaphore mainCellReady;//This indicated whether main cell are ready.
        private static int countPerProcessor = -1;//This stores how much numbers shoud be processed by this processor.
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区在线观看视频| 7777精品伊人久久久大香线蕉| 精品一区二区三区不卡| 日韩av午夜在线观看| 婷婷国产v国产偷v亚洲高清| 亚洲综合色自拍一区| 亚洲一区二区三区四区在线免费观看 | 日韩美女视频一区二区在线观看| 欧美人狂配大交3d怪物一区 | 三级不卡在线观看| 日本va欧美va精品| 免费成人av在线播放| 免费在线观看一区二区三区| 美女爽到高潮91| 国产真实乱偷精品视频免| 国产一区二区在线观看免费| 激情欧美日韩一区二区| 国产呦萝稀缺另类资源| 国v精品久久久网| www.日本不卡| 欧美中文一区二区三区| 欧美一区二区三区啪啪| 久久久久国产一区二区三区四区| 国产精品高潮呻吟| 亚洲九九爱视频| 欧美a级理论片| 丰满少妇久久久久久久| 欧美视频在线不卡| 精品国产第一区二区三区观看体验| 久久久久国产精品厨房| 一区二区三区中文字幕| 久久福利视频一区二区| 97精品超碰一区二区三区| 91麻豆精品国产91久久久久久久久 | 福利91精品一区二区三区| 97精品久久久午夜一区二区三区 | 欧美tk—视频vk| 中文字幕一区免费在线观看| 亚洲超碰精品一区二区| 国产成人综合网| 欧美日韩卡一卡二| 国产精品日日摸夜夜摸av| 亚洲大片免费看| 成人激情午夜影院| 51精品秘密在线观看| 自拍视频在线观看一区二区| 日本免费新一区视频| 色呦呦一区二区三区| 精品美女在线播放| 偷拍亚洲欧洲综合| 一本色道综合亚洲| 中文字幕av在线一区二区三区| 天天操天天色综合| 91在线porny国产在线看| www国产成人| 日韩av一级片| 欧美日韩精品福利| 亚洲欧美日韩久久| 成人激情午夜影院| 久久一留热品黄| 蜜臀av一区二区| 欧美精品视频www在线观看| 成人免费小视频| 懂色av中文一区二区三区| 日韩免费观看高清完整版| 亚洲高清一区二区三区| 在线亚洲精品福利网址导航| 中文字幕国产一区| 成人三级伦理片| 国产欧美精品区一区二区三区| 激情小说亚洲一区| 欧美精品一区二区三区蜜桃视频| 日本午夜一区二区| 7777精品久久久大香线蕉| 图片区日韩欧美亚洲| 欧美日韩综合在线| 亚洲6080在线| 91麻豆精品久久久久蜜臀 | 韩国av一区二区| 欧美成人精精品一区二区频| 石原莉奈在线亚洲二区| 在线综合亚洲欧美在线视频| 蜜臀久久久99精品久久久久久| 91精品国产美女浴室洗澡无遮挡| 日韩成人精品在线观看| 日韩亚洲国产中文字幕欧美| 久久精品国产一区二区三区免费看| 在线播放欧美女士性生活| 日本亚洲一区二区| 久久综合色天天久久综合图片| 国产美女主播视频一区| 日本一区二区视频在线| 91在线视频观看| 亚洲一区二区三区四区在线观看| 欧美日韩午夜精品| 久久成人av少妇免费| 久久精品欧美日韩精品| 99精品在线免费| 亚洲成人av中文| 久久久久久99久久久精品网站| 波多野结衣一区二区三区 | 精品国产123| 成人sese在线| 舔着乳尖日韩一区| 337p日本欧洲亚洲大胆精品| 成人综合婷婷国产精品久久| 一区二区三区精品| 久久综合色8888| 91免费视频观看| 免费成人在线观看| 亚洲天天做日日做天天谢日日欢 | 久久99国产精品免费网站| 久久精品视频免费| 欧美精品xxxxbbbb| 成人黄色电影在线 | 国产日韩综合av| 欧美老肥妇做.爰bbww视频| 国产精品亚洲成人| 亚洲成人在线免费| 中文字幕一区二区三区在线观看| 欧美日韩免费视频| 成人午夜在线播放| 久久99九九99精品| 一区二区三区**美女毛片| 欧美变态tickle挠乳网站| 色综合欧美在线| 国产精品综合一区二区三区| 亚欧色一区w666天堂| 欧美国产精品专区| 337p粉嫩大胆色噜噜噜噜亚洲| 在线一区二区观看| av一区二区三区四区| 韩国女主播成人在线观看| 亚洲午夜一区二区| 亚洲伦理在线免费看| 国产日韩欧美不卡| 26uuu久久综合| 欧美一二区视频| 777亚洲妇女| 欧美日韩国产123区| 色香蕉成人二区免费| 成人综合在线网站| 懂色av中文字幕一区二区三区| 精品一区二区三区在线视频| 欧美a级理论片| 免费成人av资源网| 麻豆精品久久久| 乱一区二区av| 精一区二区三区| 久久av中文字幕片| 国产一区视频网站| 国产精品原创巨作av| 国产一区二区免费看| 激情六月婷婷综合| 国产成人综合在线播放| 国产成a人无v码亚洲福利| 国产精品亚洲а∨天堂免在线| 国产乱色国产精品免费视频| 国产精品白丝jk黑袜喷水| 国产乱国产乱300精品| 粗大黑人巨茎大战欧美成人| 成人av电影在线观看| 色女孩综合影院| 欧美精品少妇一区二区三区| 91麻豆精品国产自产在线观看一区 | 成人免费视频免费观看| av动漫一区二区| 91国产成人在线| 日韩一区二区在线看片| 精品91自产拍在线观看一区| 久久精品亚洲乱码伦伦中文| 国产精品毛片无遮挡高清| 亚洲靠逼com| 日本视频一区二区| 国产成人超碰人人澡人人澡| 成人av影视在线观看| 欧美性猛片aaaaaaa做受| 欧美一区二区在线观看| 国产亚洲精品福利| 亚洲视频一区二区免费在线观看 | 精品一区二区久久| 99久久免费国产| 91精品在线观看入口| 久久久久久久综合| 亚洲一区二区三区在线播放| 精品一区二区三区香蕉蜜桃| 成人av网站免费观看| 日韩视频一区二区| 亚洲三级在线免费观看| 美国一区二区三区在线播放| 成人免费毛片片v| 欧美一区二区在线免费观看| 中文字幕中文在线不卡住| 日本va欧美va欧美va精品| 91浏览器打开| 久久久www成人免费毛片麻豆| 亚洲男女一区二区三区| 国产精品一区二区在线播放| 欧美日韩在线观看一区二区| 国产婷婷一区二区|