FunctionGHW

立志成为真正程序员的码农,伪全栈,目前主要写C#

使用基数排序(Radix Sort)排序字符串

FunctionGHW posted @ 2014年8月21日 16:06 in 算法学习 with tags sort radix sort string sort , 15944 阅读

基数排序(Radix Sort)是 非比较排序算法,其时间复杂度是线性的, 即\(O(n)\)。刚刚接触这个算法的时候,本以为该算法只适合输入时非负整数的情况, 不过最近在整理以前写的排序算法的Demo时,偶然想到该算法应该也可以用于字符串的排序。 根据算法的特点,直观感觉是:待排序字符串应该都是等长的。不过, 只要稍加改造,该算法也可以用于不等长字符串排序。

开始之前

假设最长字符串的长度是L,以L作为输入的长度, 然后假定所有的字符串都"补齐"到此长度,这个补齐只是逻辑上的,我们可以假想有一种"空字符", 它小于任何其它字符,用此字符补齐所有长度不足的字符串。例如:最长的字符串长度为9,有一个字符串A长度为6, 那么当比较第7位字符的时候,我们让A[7]为"空字符"。

如果要包含所有的字符似乎并不容易,我们先定义一个字符集, 待排序字符串中的所有字符都包含在这个字符集里

        //字符集
        private string _myCharSet = "0123456789qwertyuiopasdfghjklzxcvbnm";
        

再来一个生成随机字符串的方法(C#实现):

        private Random _random = new Random();

        string[] GetRandStrings(int size, int minLength, int maxLength)
        {
            string[] strs = new string[size];
            int len = 0;
            StringBuilder sb = new StringBuilder(maxLength);

            for (int i = 0; i < strs.Length; i++)
            {
                //先随机确定一个长度
                len = _random.Next(minLength, maxLength);
                for (int j = 0; j < len; j++)
                {
                    //随机选取一个字符
                    sb.Append(_myCharSet[_random.Next(_myCharSet.Length)]);
                }
                strs[i] = sb.ToString();
                sb.Clear();
            }
            return strs;
        }
        

这里按照字符的整数表示来确定桶的范围,再为"空字符"准备一个桶。 为了表示"空字符"这个特例,这里用default(char),即'\0'表示它, 因为当调用string.ElementAtOrDefault(int)方法时,如果超出索引会返回'\0'。

初级版本(C#)

        void StringRadixSort(string[] strArray)
        {
            if (strArray == null
                || strArray.Length == 0
                || strArray.Contains(null))
            {
                return;
            }

            //获得字符串的最大长度
            int maxLength = 0;
            foreach (string s in strArray)
            {
                if (s.Length > maxLength)
                {
                    maxLength = s.Length;
                }
            }

            //确定字符的整数范围
            int rangeStart = _myCharSet[0];
            int rangeEnd = _myCharSet[0];
            foreach (char ch in _myCharSet)
            {
                if (ch < rangeStart)
                    rangeStart = ch;
                if (ch  >= rangeEnd)
                    rangeEnd = ch + 1;
            }

            //也要为"空字符"分配一个桶,其索引为0
            int bucketCount = rangeEnd - rangeStart + 1;
            LinkedList<string>[] buckets = new LinkedList<string>[bucketCount];

            //初始化所有的桶
            for (int i = 0; i < buckets.Length; i++)
            {
                buckets[i] = new LinkedList<string>();
            }

            //从最后一个字符开始排序
            int currentIndex = maxLength - 1;
            while (currentIndex >= 0)
            {
                foreach (string theString in strArray)
                {
                    //如果超出索引,返回'\0'字符(default(char))
                    char ch = theString.ElementAtOrDefault(currentIndex);
                    if (ch == default(char))
                    {   //"空字符"的处理
                        buckets[0].AddLast(theString);
                    }
                    else
                    {   //将字符映射到桶
                        int index = ch - rangeStart + 1;
                        buckets[index].AddLast(theString);
                    }
                }
                //从桶里依次取回字符串,完成一趟排序
                int i = 0;
                foreach (LinkedList<string> bucket in buckets)
                {
                    while (bucket.Count > 0)
                    {
                        strArray[i++] = bucket.First();
                        bucket.RemoveFirst();
                    }
                }
                currentIndex--;
            }
        }
        

稍作"改良"

用作确定字符的整数范围的代码略显蛋疼,而且根据字符集来看, 并不是区间内所有的整数对应的字符都可能出现,因此会有这样的情况: 我们给某些根本不会出现的字符分配了桶,这纯属浪费。 我们可以用一个字典(散列)来记录字符和它的桶之间的映射。于是有了下面的代码。

        private Dictionary<char, int> _charOrderDict = 
                        new Dictionary<char, int>(_myCharSet.Length);
        void BuildCharOrderDict()
        {
            char[] sortedCharSet = _myCharSet.ToArray();
            //使用默认的比较器排序
            Array.Sort(sortedCharSet);
            //为"空字符"单独创建映射
            _charOrderDict.Add(default(char), 0);
            for (int i = 0; i < sortedCharSet.Length; i++)
            {
                // 保存的是字符及其对应的桶的索引
                _charOrderDict.Add(sortedCharSet[i], i + 1);
            }
        }
        

也可以不用默认的字符排序来作为映射,而完全自己定义字符之间的大小关系。 下面是调整后的代码:

        void StringRadixSort(string[] strArray)
        {
            if (strArray == null
                || strArray.Length == 0
                || strArray.Contains(null))
            {
                return;
            }
            //获得字符串的最大长度
            int maxLength = 0;
            foreach (string s in strArray)
            {
                if (s.Length > maxLength)
                {
                    maxLength = s.Length;
                }
            }

            //为每一个字符(包括空字符'\0')分配一个桶
            //"空字符"索引应为0
            int bucketCount = _myCharSet.Length + 1;
            LinkedList<string>[] buckets = new LinkedList<string>[bucketCount];

            //初始化所有的桶
            for (int i = 0; i < buckets.Length; i++)
            {
                buckets[i] = new LinkedList<string>();
            }

            //从最后一个字符开始排序
            int currentIndex = maxLength - 1;
            while (currentIndex >= 0)
            {
                foreach (string theString in strArray)
                {
                    //如果超出索引,返回'\0'字符(default(char))
                    char ch = theString.ElementAtOrDefault(currentIndex);
                    //根据字符顺序的定义查询字符
                    int index = _charOrderDict[ch];
                    buckets[index].AddLast(theString);
                }
                //从桶里依次取回字符串,完成一趟排序
                int i = 0;
                foreach (LinkedList<string> bucket in buckets)
                {
                    while (bucket.Count > 0)
                    {
                        strArray[i++] = bucket.First();
                        bucket.RemoveFirst();
                    }
                }
                currentIndex--;
            }
        }
        

Now, it works! 如果采用的快速排序来做, 其时间复杂度为\(O(n*log n)\)。表面上看,基数排序更好,不过严格来说, 基数排序的时间复杂度应该是\(O(k*n)\),其中k和字符串长度正相关。 此时两种算法的比较可以通过比较k和\(log n\)的比较结果近似得出。 如果字符串的长度很长,即k很大,而输入规模n不大的时候, 就会有k>\(log n\),此时快速排序反而更有优势。反之,则基数排序可能更优。

最后...

杯具的是,当我扩大字符集,将键盘上所有字符都加进去后, 发现基数排序的结果和Array.Sort(string[]方法的排序结果并不一样。 仔细观察资源管理器对文件名的排序,才发现其字符串排序的规则要复杂的多,并非简单的比较字符。 查询相关资料后发现,字符串的排序甚至还要考虑区域文化的影响,即使都是拉丁字母, 不同地区的排序规则都可能不一样,因此, 使用基数排序实现的字符串排序算法好像并无多大实用价值<T-T>。

    String sorting and comparison are language-specific. Even within languages based on the Latin script, there are different composition and sorting rules. Thus do not rely on code points to do proper sorting and string comparison.
引用自:Sorting and String Comparison

如果要在实际生产中排序字符串,还是使用类库提供的通用排序算法吧。

 

  • 无匹配
Liwovosa 说:
2021年4月12日 15:05 This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. soap 2 day
Liwovosa 说:
2021年4月13日 18:26

This is my first time i visit here. I found so many interesting stuff in your blog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all the enjoyment here keep up the good work online casino

satta matka 说:
2021年4月15日 23:35

Thanks for the blog loaded with so many information. Stopping by your blog helped me to get what I was looking for.

SmithSeo 说:
2021年4月16日 06:18

This particular papers fabulous, and My spouse and i enjoy each of the perform that you have placed into this. I’m sure that you will be making a really useful place. I has been additionally pleased. Good perform! situs judi slot online terpercaya

guessing forum 说:
2021年4月16日 07:40

You know your projects stand out of the herd. There is something special about them. It seems to me all of them are really brilliant

SmithSeo 说:
2021年4月20日 04:41

Wow, What a Excellent post. I really found this to much informatics. It is what i was searching for.I would like to suggest you that please keep sharing such type of info.Thanks voyance

SmithSeo 说:
2021年4月20日 04:42

Im no expert, but I believe you just made an excellent point. You certainly fully understand what youre speaking about, and I can truly get behind that. agen joker123

sattamatka 说:
2021年4月22日 18:09

Wow, What an exceptional pronounce. i found this too much informatics. it’s miles what i used to be searching for for. i’d as soon as to area you that absorb keep sharing such kind of data.If realistic, thank you.

satta matka 说:
2021年4月24日 19:45

Thank you a bunch for sharing this with all of us you actually realize what you are talking about! Bookmarked. Please also seek advice from my site. We could have a hyperlink change contract between us!

which is the best ap 说:
2021年4月27日 19:42

Nice blog, I will keep visiting this blog very often.

bowie knives 说:
2021年4月28日 18:18

Yes i am totally agreed with this article and i just want say that this article is very nice and very informative article.I will make sure to be reading your blog more. You made a good point but I can't help but wonder, what about the other side? !!!!!!Thanks

walmartone com 说:
2021年4月28日 23:47

tremendous web page, where did u arrive occurring thinking of the opinion within the region of this posting?i've right of proper of right of access some of the articles approaching your website now, and that i in truth subsequent to your fashion. thank you a million and absorb save taking vicinity the energetic institution.

smithseo 说:
2021年4月30日 18:34

Hey what a brilliant post I have come across and believe me I have been searching out for this similar kind of post for past a week and hardly came across this. Thank you very much and will look for more postings from you. pgslot auto

ipl prediction 2021 说:
2021年5月03日 18:11

Thank you a bunch for sharing this with all of us you actually realize what you are talking about! Bookmarked. Please also seek advice from my site =). We could have a hyperlink change contract between us!

Best Moving Local An 说:
2021年5月06日 00:18

i feel so good to read your shared information thanks for sharing such a nice information with us,

John 111 说:
2021年5月08日 17:24

I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post. chudjenbet

John 111 说:
2021年5月08日 17:32

Super site! I am Loving it!! Will return once more, Im taking your food additionally, Thanks. ทางเข้าslotxo

John 111 说:
2021年5月08日 17:38

I am hoping the same best effort from you in the future as well. In fact your creative writing skills has inspired me. บริการ SEO

Liwovosa 说:
2021年5月08日 20:50

Nice post. I was checking constantly this blog and I am impressed! Extremely helpful information specially the last part I care for such info a lot. I was seeking this particular information for a very long time. Thank you and good luck. online casino uk

Top SEO 说:
2021年5月11日 12:47

First You got a great blog .I will be interested in more similar topics. i see you got really very useful topics, i will be always checking your blog thanks. kuliah kelas karyawan

Top SEO 说:
2021年5月11日 12:51

It should be noted that whilst ordering papers for sale at paper writing service, you can get unkind attitude. In case you feel that the bureau is trying to cheat you, don't buy term paper from it. basketball legends unblocked game

Top SEO 说:
2021年5月11日 13:01

Well, this got me thinking what other workouts are good for those of us who find ourselves on the road or have limited equipment options. 熟女 セックス

Top SEO 说:
2021年5月11日 13:03

It is perfect time to make some plans for the future and it is time to be happy. I've read this post and if I could I desire to suggest you some interesting things or suggestions. Perhaps you could write next articles referring to this article. I want to read more things about it! fitness clothes

satta results 说:
2021年5月11日 20:11

Thanks for that excuse an awful lot for the make acknowledged you get. I subsequent on your say and all you component long gone us is acquainted and quite informative, i would behind to bookmark the web page so i'm able to arrive right here anew to gate you, as you have got over and ended surrounded by way of a extremely good process.

Liwovosa 说:
2021年5月14日 14:35

PGSLOT สล็อตออนไลน์แบบ 3D พีจีสล็อตออนไลน์ ภาพงาม 3 มิติ สมัยเก่าการที่พวกเราเล่นเกมส์ออนไลน์ ส่วนใหญ่จะเป็น เพียงแค่ 2 มิติที่เป็นภาพ ที่มิได้งามอะไรมากเท่าไรนัก และก็ขัดหูขัดตาผู้เล่นอย่างพวกเราๆแต่ว่าสมัยปัจจุบันนี้ได้มีการปรับปรุงทั้งยังระบบ รวมทั้งเทคโนโลยีที่ล้ำสมัย ทำให้สร้างเกมส์ที่มีภาพที่ออกมางดงามเปรียบเสมือน ราวกะอยู่ในโลกของแท้เนื่องจากระบบ ที่ปรับปรุงขึ้นมาใหม่เพื่อผู้เล่นได้เปิดประสบการณ์การเล่นเกมส์ที่มีภาพกราฟฟิคที่งามเหมือนจริง น่าเล่นเป็นที่สุด สล็อต PG

mygiftcardsite 说:
2021年5月15日 15:42

Every year, thousands of customers around the world choose MaroCar for a cheap car hire in Morocco. The platform operates in the main cities of the kingdom (Casablanca, Marrakech, Tangiers, Rabat …) and delivers its cars to the address of your choice or directly to the main airports in the country.

satta matta matka 说:
2021年5月18日 19:26

Every year, thousands of customers around the world choose MaroCar for a cheap car hire in Morocco. The platform operates in the main cities of the kingdom (Casablanca, Marrakech, Tangiers, Rabat …) and delivers its cars to the address of your choice or directly to the main airports in the country.

kalyan satta 说:
2021年5月19日 01:23

I am continually amazed by the amount of information available on this subject. What you presented was well researched and well worded in order to get your stand on this across to all your readers.

matka boss 说:
2021年5月19日 19:02

Thank you for a absolutely interesting blog. What else may additionally I profit that handy of data written in this kind of unadulterated right of get right of entry to? Ive a engagement that i am profitably now humming in the back of inspiration to, and i’ve been at the see out for such data.

Crypto Nation Pro 说:
2021年5月20日 17:55

best publicize! this is a every percentage of easy to apply weblog that i can definitively come steerage to greater epoch this yr! thanks for informative proclaim.

SEO Company 说:
2021年5月21日 23:58

The main reason why it's always a lot better that one can significant researching preceding doing. You'll be able to share improved page using this method.

satta 说:
2021年5月22日 17:03

Very good topic, similar texts are I do not know if they are as good as your work out.

matka 说:
2021年5月22日 23:09

Wow, What an exceptional pronounce. i found this too much informatics. it’s miles what i used to be searching for for. i’d as soon as to area you that absorb keep sharing such kind of data.If realistic, thank you.

matka guessing 说:
2021年5月23日 16:10

International Market place for Smar*****ches, GPS, Fitness, Waterproof, Fitness Smart wach,

sattaguessing 说:
2021年5月23日 20:26

You make so many great points here that I read your article a couple of times. Your views are in accordance with my own for the most part. This is great content for your readers.

สล็อต 说:
2021年5月25日 19:33

This is highly informatics, crisp and clear. I think that everything has been described in systematic manner so that reader could get maximum information and learn many things.

먹튀검증사이트 说:
2021年5月31日 18:52

Good artcile, but it would be better if in future you can share more about this subject. Keep posting.

Judi Casino Online T 说:
2021年6月01日 19:48

Judi casino online terbaik. Dapatkan untung yang besar dan bersiap menjadi milyarder hanya di SlotJawara.org. Situs judi online 24 jam terpercaya - agen judi bola online terpercaya deposit pulsa. Terbesar di Indonesia. Segera kunjungi kami.

matka result 说:
2021年6月04日 23:28

Aw, this was a really nice post. In thought I would like to place in writing in this way moreover – taking time and actual effort to create a very good article… but what / things I say… I procrastinate alot and also no indicates apparently get something done.

seo company 说:
2021年6月09日 23:40

This is certainly additionally an exceedingly wonderful offer everyone truly qualified on the lookout with. It's always not likely everyday there is chances read a little something.

check this link 说:
2021年6月11日 13:55

i am until the call off of time greatly surprised by means of the amount of recommend understandable in financial credit score to this situation. What you presented became ably researched and adroitly worded in an effort to collect your stand within the location of this across to every and the entire single one one your readers.

more info 说:
2021年6月26日 22:49

We are really grateful for your blog post. You will find a lot of approaches after visiting your post. I was exactly searching for. Thanks for such post and please keep it up. Great work.

counselling 说:
2021年6月27日 23:39

Great .. exquisite .. sick bookmark your blog and make acknowledged you may the feeds along withIm happy to discover for that footnote many useful information here within the proclaim, we yearning feint out extra techniques in this regard, thanks for sharing.

bridal makeup 说:
2021年6月29日 00:43

Wow, What an exceptional pronounce. i found this too much informatics. it’s miles what i used to be searching for for. i’d as soon as to area you that absorb keep sharing such kind of data.If realistic, thank you.

Travel 说:
2021年7月11日 15:22

Friend, this web site might be fabolous, i just like it

Kapil Matka 说:
2021年7月15日 19:15

cool stuff you have got and you keep update all of us.

roadrunner webmail 说:
2021年7月20日 16:34

Thank you for such a well written article. It’s full of insightful information and entertaining descriptions. Your point of view is the best among many.

Cars in oman 说:
2021年7月20日 21:39

So i'm certainly very happy acquire this url and even made like analyzing invaluable articles and reviews released these. That options belonging to the novelist is remarkable, bless you in the have.

Indian Satta 说:
2021年8月05日 19:30

You have a good point here!I totally agree with what you have said!!Thanks for sharing your views...hope more people will read this article!!

satta result 说:
2021年8月14日 18:36

I read a lot of stuff and i found that the way of writing to clearifing that exactly want to say was very good so i am impressed and ilike to come again in future.

matka golden 说:
2021年8月15日 19:43

positive website online, where did u arrive taking region at the back of the advice regarding this posting? i’m appreciative i discovered it even though, knocked out the weather be checking abet soon to find out what courting posts you tote happening.

Pune Call Girls 说:
2021年8月16日 18:50

You know your projects stand out of the herd. There is something special about them. It seems to me all of them are really brilliant

jasa seo indonesia 说:
2021年8月16日 19:32

Wonderful Content, Now i'm a massive believer for offer suggestions relating to internet websites to make sure you let the web page creators understandthat they’ve incorporated an issue good to make sure you just a couple of!

dns probe finished n 说:
2021年8月17日 21:45

The website is looking bit flashy and it catches the traffic eyes. layout is beautiful clean and a enjoyable adherent without problems reached interface.

best earphones under 说:
2021年8月18日 22:49

hey, your websites are truly suitable. I appreciate your movement.

Boss matka 说:
2021年8月20日 17:10

I read a article under the same title some time ago, but this articles quality is much, much better. How you do this..

smm panel 说:
2021年8月22日 23:40

You completed certain reliable points there. I did a search on the subject and found nearly all persons will agree with your blog.

fastest matka result 说:
2021年8月23日 16:05

This is certainly additionally an exceedingly wonderful offer everyone truly qualified on the lookout with. It's always not likely everyday there is chances read a little something.

today ipl match Pred 说:
2021年9月01日 22:31

That is very important for me and helpful for others. The post is very clear and focuses on the main points.I need this type every day for learning. Outstanding articles and think are very unique.

link 说:
2021年9月04日 19:06

Thank you for such a well written article. It’s full of insightful information and entertaining descriptions. Your point of view is the best among many.

prediksi togel sgp 说:
2021年9月08日 19:35

Hey, you used to write wonderful, but the last few posts have been kinda boring… I miss your tremendous writings. Past few posts are just a little out of track! come on!

matka boss 说:
2021年9月09日 17:38

I realize this is one of the most meaningful counsel for me. And i am vivacious studying your article. however have to commentary upon some standard matters, the internet site style is unmodified; the articles are invincible. thank you for the ton of actual and viable explicit.

satta matta 说:
2021年9月12日 19:00

What is an outstanding post! “I’ll be back” (to read more of your content). Thanks for the nudge!

ipl toss prediction 说:
2021年9月13日 04:47

Thank you so much for sharing this post, I appreciate your work. It was a great informative post. Go so many useful and informative links.Loved your writings also. Concept of the topic was well discussed. Love to come here again.

credit-card 说:
2021年9月13日 22:10

Great .. exquisite .. sick bookmark your blog and make acknowledged you may the feeds along withIm happy to discover for that footnote many useful information here within the proclaim, we yearning feint out extra techniques in this regard, thanks for sharing.

satta batta 说:
2021年9月14日 15:05

Just admiring your work and wondering how you managed this blog so well. It’s so remarkable that I can't afford to not go through this valuable information whenever I surf the internet!

Cadiveu Keratin 说:
2021年9月14日 17:47

Excellent article. Very interesting to read. I really love to read such a nice article. Thanks! keep rocking.

먹튀검증커뮤니티 说:
2021年9月14日 19:25

A person essentially help to make seriously articles I would state. This is the first time I frequented your website page and thus far? I surprised with the research you made to make this particular publish incredible. Fantastic job!

matka golden 说:
2021年9月16日 15:24

This article is an appealing wealth of informative data that is interesting and well-written. I commend your hard work on this and thank you for this information. You’ve got what it takes to get attention.

store holiday hours 说:
2021年9月19日 13:57

This is a brilliant blog! I'm very happy with the comments!..

satta matka 说:
2021年9月25日 19:58

This is a smart blog. I mean it. You have so much knowledge about this issue, and so much passion. You also know how to make people rally behind it, obviously from the responses.

krogerexperiencee fu 说:
2021年9月25日 23:47

Pretty nice post. I just stumbled upon your weblog and wanted to say that I have really enjoyed browsing your blog posts. After all I’ll be subscribing to your feed and I hope you write again soon!

sattamatka 说:
2021年9月27日 19:44

howdy There. i discovered your blog the usage of msn. this is an the complete expertly written article. i can make certain to bookmark it and repayment to door greater of your useful auspices. thanks for the proclaim. unwell actually comeback.

satta 说:
2021年9月29日 18:16

Hello, you old to engrave magnificent, except the last few posts have been kinda boring… I skip your super writings. Historical several posts are merely a bit out of track! extend on!

www.locationsnearmen 说:
2021年10月03日 15:00

Im no expert, but I believe you just made an excellent point. You certainly fully understand what youre speaking about, and I can truly get behind that.

mynorthsidehr 说:
2021年10月04日 21:40

Website especially this blog page. Among the lots of comments on your articles. Thanks for sharing

www.myloweslife.com 说:
2021年10月10日 19:48

I guess I am not the only one having all the enjoyment here! keep up the good work...

bwwlistens-survey 说:
2021年10月13日 00:47

Everything has its value. Thanks for sharing this informative information with us. GOOD works!

walmartone 说:
2021年10月13日 19:04

Just admiring your work and wondering how you managed this blog so well. It’s so remarkable that I can't afford to not go through this valuable information whenever I surf the internet!

jdwoj 说:
2021年10月16日 03:12

Maltavilla Luxury Holiday Villa rentals in Malta. Friends, family and special moments were our inspiration while creating our Malta luxury villa rentals for you.

usa sarms 说:
2021年10月20日 00:30

Nice to be visiting your blog once more, it has been months for me. Well this article that ive been waited for therefore long. i want this article to finish my assignment within the faculty, and it has same topic together with your article. Thanks, nice share.

Luxury Hotels & Reso 说:
2021年11月10日 18:56

Nice to read your article! I am looking forward to sharing your adventures and experiences.

the skindex 说:
2021年11月13日 16:21

Nice to read your article! I am looking forward to sharing your adventures and experiences.

Visto turistico per 说:
2021年11月13日 18:00

Very nice job... Thanks for sharing this amazing and educative blog post!

Permohonan Visa AS 说:
2021年11月14日 18:58

You there, this is really good post here. Thanks for taking the time to post such valuable information. Quality content is what always gets the visitors coming.

twc mail 说:
2021年11月17日 00:37

Nice to read your article! I am looking forward to sharing your adventures and experiences.

videography cambridg 说:
2021年11月18日 17:47

I have you bookmarked to check out new stuff you post.

Indië visum aanlyn 说:
2021年11月24日 23:36

I am very much pleased with the contents you have mentioned. I wanted to thank you for this great article.

Write for us 说:
2021年11月26日 21:05

it's miles a gratifying internet site.. The design seems thoroughly to your liking.. hold enthusiastic later that!.

كندا ايتا اون لاين 说:
2021年11月28日 19:02

reat things you’ve always shared with us. Just keep writing this kind of posts.The time which was wasted in traveling for tuition now it can be used for studies.Thanks

Top SEO 说:
2021年12月03日 14:46

Wow! Such an amazing and helpful post this is. I really really love it. It's so good and so awesome. I am just amazed. I hope that you continue to do your work like this in the future also vegas cosmetics

tole painting ideas 说:
2021年12月03日 16:41

Thank you a bunch for sharing this with all of us you actually realize what you are talking about! Bookmarked. Please also seek advice from my site =). We could have a hyperlink change contract between us!

Forett at Bukit Tima 说:
2021年12月04日 23:11

I definitely enjoying every little bit of it. It is a great website and nice share. I want to thank you. Good job! You guys do a great blog, and have some great contents. Keep up the good work

satta matka 说:
2021年12月08日 00:01

I read a article under the same title some time ago, but this articles quality is much, much better. How you do this..

satta matka 说:
2021年12月08日 20:18

tremendous web page, where did u arrive occurring thinking of the opinion within the region of this posting?i've right of proper of right of access some of the articles approaching your website now, and that i in truth subsequent to your fashion. thank you a million and absorb save taking vicinity the energetic institution.

0x0 0x0 说:
2021年12月11日 18:28

I just couldn't leave your website before telling you that I truly enjoyed the top quality info you present to your visitors? Will be back again frequently to check up on new posts.

sattamatka 说:
2021年12月28日 20:31

i feel so good to read your shared information thanks for sharing such a nice information with us,

matka 说:
2021年12月29日 22:15

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info.

satta matta matka 说:
2021年12月30日 19:38

Hence it is better you have to affiliated understand when setting up. It is easy to put up a lot better apply for right away.

write for us 说:
2022年1月03日 19:54

I just couldn't leave your website before telling you that I truly enjoyed the top quality info you present to your visitors? Will be back again frequently to check up on new posts.

satta matta 说:
2022年1月04日 16:54

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info.

satta guessing 说:
2022年1月05日 15:32

Cool stuff you have got and you keep update all of us.

milan night guessing 说:
2022年1月05日 22:24

i was surfing net and thankfully came throughout this website and found intensely exciting stuff here. Its in endeavor of truth amusing to settlement. I enjoyed loads. thank you for sharing this super aspire.

sattamatka 说:
2022年1月08日 00:28

Cool stuff you have got and you keep update all of us.

satta guessing 说:
2022年1月09日 15:48

I found this is an informative and interesting post so i think so it is very useful and knowledgeable. I would like to thank you for the efforts you have made in writing this article.

sattamatka 说:
2022年1月14日 00:02

Thank you for the post. I will definitely comeback.

matka 说:
2022年1月14日 16:36

Wow, What an exceptional pronounce. i found this too much informatics. it's miles what i used to be searching for for. i'd as soon as to area you that absorb keep sharing such kind of data.If realistic, thank you.

satta 说:
2022年1月14日 16:57

The next time I read a blog, I hope that it doesnt disappoint me as much as this one. I mean, I know it was my choice to read, but I actually thought you have something interesting to say. All I hear is a bunch of whining about something that you could fix if you werent too busy looking for attention.

Liv@MB Showflat 说:
2022年3月06日 20:15

Good artcile, but it would be better if in future you can share more about this subject. Keep posting.

prediksi togel hk 说:
2022年5月02日 13:55

great post, but need time to translate and read it! but really love it. Hope u can doing this job consistently

eminem merch 说:
2022年5月21日 08:25

Really Good job Thankyou Wao it’s an awesome page I like it so much because I have never seen this type blog from many days but at last I take it.

justin bieber merch 说:
2022年5月21日 08:47

I was looking for the same article but I visited many websites. Glad to see that you wrote in such a well manner way. Hope for good.

California Bar Exam 说:
2022年5月26日 15:57

Hello, I'm a new fan of your website, and I'm really enjoying it. As a result, I am glad to share this information with you.

cars for sale in der 说:
2022年5月28日 18:17

Hello, I'm a new fan of your website, and I'm really enjoying it. As a result, I am glad to share this information with you.

browsmailash 说:
2022年6月01日 13:45

It is possible to learn the skill of [url=https://mailashbrows.com/blogs/news/eyelash-extension-training]eyelash extension training[/url] on your own for success. However, if you intend to take this to a professional level, an eyelash extension certification course is recommended, and mailash offers the greatest eyelash extension training.

browsmailash 说:
2022年6月01日 13:46

It is possible to learn the skill of <a href="https://mailashbrows.com/blogs/news/eyelash-extension-training">eyelash extension training</a> on your own for success. However, if you intend to take this to a professional level, an eyelash extension certification course is recommended, and mailash offers the greatest eyelash extension training.

browsmailash 说:
2022年6月01日 13:47

**[Eyelash glue supply](https://mailashbrows.com/blogs/news/eyelash-glue-supply)**

video production bel 说:
2022年6月02日 23:26

Thank you very much for this wonderful article. You put a lot of effort to please us with excellent content. This post has opened up so much information for me. video production belfast

mini hair straighten 说:
2022年6月03日 00:40

This post has opened up so much information to me. Thank you for this very informative blog post. Thanks for sharing the huge information. mini hair straightener

Joji Merch 说:
2022年6月03日 01:28

Thank you very much for this wonderful article. You put a lot of effort to please us with excellent content. This post has opened up so much information for me. Joji Merch

essentialshoodie 说:
2022年6月03日 16:09

This is a great feature for sharing this informative message. I am impressed by the knowledge.

SEO 说:
2022年6月05日 21:51

Thanks so much for sharing this awesome info! I am looking forward to see more postsby you! 가라오케

SEO 说:
2022年6月06日 21:24

Thanks for another wonderful post. Where else could anybody get that type of info in such an ideal way of writing? 바카라사이트

SEO 说:
2022年6月07日 21:48 Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work. https://www.mapquest.com/my-maps/6cbd6ac6-1cbf-478d-8375-27a89938e204
Daglig städning 说:
2022年6月08日 23:18

Jag ser att artikeln har en hel del investeringar i innehåll och vetenskap. Jag tog mig tid att läsa dem och tyckte att de var ganska intressanta. Din artikel är mycket informativ. Tack för att du delar med dig. Daglig städning

khatribaba 说:
2022年6月09日 18:11

Nice post. I was checking constantly this blog and I am impressed! Extremely helpful information specially the last part I care for such info a lot. I was seeking this particular information for a very long time. Thank you and good luck. <a href="https://www.facebook.com/ibmseopk/">IBMSEO</a>

SEO 说:
2022年6月12日 13:46

<a href="https://mltworld.com/mobile/huawei-y7-pro-2018.html">Huawei Y7 Pro 2018</a> Specs, Reviews and Price in Pakistan, MLT World offers all information about this phone.

SEO 说:
2022年6月12日 13:47

Huawei Y7 Pro 2018 Specs, Reviews and Price in Pakistan, MLT World offers all information about this phone.

SEO 说:
2022年6月15日 20:48

This article is an appealing wealth of informative data that is interesting and well-written. I commend your hard work on this and thank you for this information. You’ve got what it takes to get attention. สล็อต888

Interpersonal Therap 说:
2022年6月22日 14:20

Hello, I'm a new fan of your website, and I'm really enjoying it. As a result, I am glad to share this information with you.
<a href="https://www.inspsych.com/.com//"title="Interpersonal Therapy">Interpersonal Therapy</a>

hot or not composite 说:
2022年6月23日 13:03

I have read your blog as it provides very unique information. After readingthe complete blog I’ve come to know a lot of things. Keep sharing such type of information with us. Thanks<a href="https://itsreadtime.com/hot-or-not-composite-images/">HOT OR NOT COMPOSITE IMAGES</a>

forbesnews247 说:
2022年6月23日 13:42

Phenomenal and outstanding. It is indeed deserving of commendation. <a href="https://forbesnews247.com/mangago/">Mangago</a> <a href="https://forbesnews247.com/who-is-the-most-powerful-doctor-in-the-world/">Who is the most powerful doctor in the world</a>

wahidjitu 说:
2022年6月24日 18:03

I would like to say that this blog is really convincing, because it made me win the big lottery

wahidjitu 说:
2022年6月24日 22:41

Hanya satu kata untuk blog ini, blog ini sangatlah luar biasa, saya ingin mengucapkan banyak terima kasih, karena sudah memberikan prediksi terbaik sepanjang
masa, dan membuat saya bisa memenangkan banyk tebakan angka permainan togel pada situs terpercaya, terima kasih !! HK hari ini

fysioterapeut lön 说:
2022年6月30日 01:57

Keep sharing such information as it is very useful for us. I have also a website based on
<a href="https://senscare.se/" title="fysioterapeut lön">fysioterapeut lön</a>

pacman 30th annivers 说:
2022年7月02日 15:03

http://functionghw.is-programmer.com/posts/57826.html

pacman 30th annivers 说:
2022年7月02日 15:06

Phenomenal and outstanding. It is indeed deserving of commendation. <a href="https://itsreadtime.com/pacman-30th-anniversary/">pacman 30th anniversary</a> <a href="https://itsreadtime.com/google-snake-mods/">google snake mods</a>

PACMAN 30TH ANNIVERS 说:
2022年7月02日 15:08

Phenomenal and outstanding. It is indeed deserving of commendation.

GOOGLE SNAKE MODS 说:
2022年7月02日 15:09

Phenomenal and outstanding. It is indeed deserving of commendation.

Mood Disorders Recov 说:
2022年7月05日 14:43

You wrote so attractive that I could not stop myself for commenting it. Really Good job Thankyou

liposomal nmn capsul 说:
2022年7月05日 14:49

Wao it’s an awesome page I like it so much because I have never seen this type blog from many days but at last I take it.
Really Good job Thankyou

imagetech 说:
2022年7月14日 17:33

I’m happy I found this website! From time to time, students want to cognitive the keys of productive literary essays composing. Your first-class know-how about this good post can become a proper basis for such people. cheers!

Strawberry laser USA 说:
2022年7月17日 01:58

I'm glad I came on your page; thank you for offering such useful information, and please continue to do so Strawberry laser USA

bunnyban 说:
2022年7月18日 13:35

I have read your blog as it provides very unique information. After readingthe complete blog I’ve come to know a lot of things. Keep sharing such type of information with us. Thanks<a href="https://bunnyban.com/bunny-costume/">Bunny Costume</a> <a href="https://bunnyban.com/bunny-hat/">bunny hat</a>

bunnyhat 说:
2022年7月18日 13:37

I have read your blog as it provides very unique information. After readingthe complete blog I’ve come to know a lot of things. Keep sharing such type of information with us. Thanks<a href="https://bunnyban.com/bunny-costume/">Bunny Costume</a> <a href="https://bunnyban.com/bunny-hat/">bunny hat</a>

forbesnews247 说:
2022年7月18日 13:52

Phenomenal and outstanding. It is indeed deserving of commendation. <a href="https://forbesnews247.com/most-revealing-swimsuits-of-all-time/">Most Revealing Swimsuits Of All Time</a> <a href="https://forbesnews247.com/ysl-black-opium-dossier-co/">ysl black opium dossier.co</a>

best business phone 说:
2022年8月02日 19:34

You wrote so attractive that I could not stop myself for commenting it. Really Good job Thankyou
best business phone service

life coaches in keny 说:
2022年8月11日 20:48

Thanks for sharing this valuable information. life coaches in kenya

BUNNYHAT 说:
2022年8月13日 17:30

Thank you for providing this information! Maintain your site's high performance. You can also look at my website. <a href="https://bunnyban.com/bunny-hat/"> bunnyhat</a><a href="https://bunnyban.com/lola-bunny-space-jam-costume-for-girls/"> lola bunny costume</a>

LOLA BUNNY COSTUME 说:
2022年8月13日 17:31

Thank you for providing this information! Maintain your site's high performance. You can also look at my website.

TBSE Madhyamik Quest 说:
2022年8月17日 21:52

The Secondary School Certificate Class 10 Previous Question Paper has been released by the Tripura State Board of Secondary and Higher Secondary Education (TBSE). The tests will be given in March of current year, which is 2023. According to the online versions of the previous question papers, the SSC examinations will take place in March and finish the last week of March. The New Model Paper is available to students on the official website. TBSE Madhyamik Question Paper 2023 TBSE Madhyamik 10th Question Paper 2023 or the New Model Paper for the TBSE Madhyamik 10th Exam 2023 The Tripura Board of TBSE will release the Tripura Board Madhyamik New Question Paper 2023 for the Secondary exam on its official website. A TBSE 10th New Question Paper 2023 is available.

Facebook Touch 说:
2022年8月22日 12:56

https://tpfcomercial.es/blog/5_BIENVENIDOS.html

Facebook Touch 说:
2022年8月22日 12:57

I have read your blog as it provides very unique information. After readingthe complete blog, I’ve come to know a lot of things. Keep sharing such type of information with us. Thanks<a href=https://knowledgeens.com/facebook-touch/"> Facebook touch </a>reading the

picuki 说:
2022年8月26日 12:27

Thanks for sharing this valuable information <a href="https://knowledgeens.com/picuki/">picuki</a>

picuki 说:
2022年8月26日 12:28

https://knowledgeens.com/picuki/

freetubespots 说:
2022年9月01日 13:07

Thanks for sharing this valuable information <a href="https://knowledgeens.com/free-tube-spot/">freetubespots</a>

Supreme Hoodie 说:
2022年9月05日 00:12

I would like to thank you for the wonderful information you have shared with us.<a href="https://supremeofficial.shop/supreme-hoodie/">Supreme Hoodie</a>

Snaptik 说:
2022年9月09日 11:29

I would like to thank you for the great work you are doing. I have read your post thoroughly and the post is very much amazing. It provides very useful knowledge and information. I really loved the idea. Keep sharing such type of information as it is very useful for me. Thanks<a href="https://commongro.com/snaptik/"> Snaptik </a>

Streameast 说:
2022年9月09日 13:30

I have read your blog because it has a lot of interesting stuff. I learned a lot after reading the blog in its entirety. Continue providing us with this kind of knowledge. Thanks <a href="https://itsreadtime.com/streameast/">Streameast</a>

MBA Dissertations 说:
2022年9月10日 17:30

Thanks for sharing this information. I have shared this link with others keep posting such information. As a final year student this material is helpful in more ways than one.

MBA Dissertations 说:
2022年9月10日 17:31

I am a Research Associate and part time PhD student at Oxford Brookes University (UK) looking to join an education forum and community.

AP 10th Social Quest 说:
2022年9月10日 19:39

Social Study is most important students to all students of AP 10th Class, here we have provided the study material with solved question bank for all government and private school TM, EM, UM and HM students in chapter wise from past years old exams and we have provided the AP 10th Social Model Paper 2023 Pdf suggested by subject experts. AP 10th Social Question Paper All BSEAP 10th class regular and private course students can follow the list of chapters under SSC Social Study to practice study material with previous question bank to get a better score in summative assessment (SA) and formative assessment (FA) SA-1, SA-2, FA-1, FA-2, FA-3, FA-4 along with Assignments exams previously called Unit Test-1, Unit Test-2, Unit Test-3, Unit Test-4 and Three Months.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter