博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
各种排序算法汇集
阅读量:5949 次
发布时间:2019-06-19

本文共 3217 字,大约阅读时间需要 10 分钟。

View Code
private void Sort1(int[] list)//冒泡排序        {            //从第一个字符向后冒泡亮亮比较获取最大值放在最后            //第一次循环首先得到一个最大值;第二次循环得到第二大值            int i, j, temp;            bool done = false;            j = 1;            while ((j < list.Length) && (!done))            {                done = true;                for (i = 0; i < list.Length - j; i++)                {                    if (list[i] > list[i + 1])                    {                        done = false;                        temp = list[i];                        list[i] = list[i + 1];                        list[i + 1] = temp;                    }                }                j++;            }        }        //选择排序        //向后冒泡获取最小值的索引,然后和第i个值进行数据交换        private void Sort2(int[] list)        {            int minIndex = 0;            for (int i = 0; i < list.Length; i++)            {                minIndex = i;                for (int j = i; j < list.Length; j++)                {                    if (list[j] < list[minIndex])                    {                        minIndex = j;                    }                }                int temp = list[i];                list[i] = list[minIndex];                list[minIndex] = temp;            }        }        //插入排序        //此种算法是首先循环第二个元素,让第二个元素和第一个元素比较,如果i+1
0; j--) { if (list[j - 1] > t) { list[j] = list[j - 1]; list[j - 1] = t; } } } } private void Sort4(int[] list)//希尔排序 { //list.Length=25; int inc; for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ; for (; inc > 0; inc = inc / 3) { for (int i = inc + 1; i <= list.Length; i += inc) { int t = list[i - 1]; int j = i; while ((j > inc) && (list[j - inc - 1] > t)) { list[j - 1] = list[j - inc - 1]; j -= inc; } list[j - 1] = t; } } } //快速排序 private void quick_sort(int[] s, int l, int r) { if (l < r) { int i = l, j = r, data = s[l]; while (i < j) { while (i < j && s[j] >= data) // 从右向左找第一个小于x的数 { j--; } if (i < j) { s[i] = s[j]; i++; } while (i < j && s[i] < data) // 从左向右找第一个大于等于x的数 { i++; } if (i < j) { s[j] = s[i]; j--; } } s[i] = data;//第一次循环获取的是左边的数据都比data小的数据,右边的大于data的数据 quick_sort(s, l, i - 1); // 递归调用 quick_sort(s, i + 1, r); } }

 

转载于:https://www.cnblogs.com/TNSSTAR/archive/2012/08/22/2650762.html

你可能感兴趣的文章
Numpy中的random模块中的seed方法的作用
查看>>
用java数组模拟登录和注册功能
查看>>
关于jsb中js与c++的相互调用
查看>>
UVA 122 Trees on the level 二叉树 广搜
查看>>
POJ-2251 Dungeon Master
查看>>
tortoisesvn的安装
查看>>
URAL 1353 Milliard Vasya's Function DP
查看>>
速读《构建之法:现代软件工程》提问
查看>>
Android onclicklistener中使用外部类变量时为什么需要final修饰【转】
查看>>
django中聚合aggregate和annotate GROUP BY的使用方法
查看>>
TFS简介
查看>>
docker管理平台 shipyard安装
查看>>
Bootstrap3 栅格系统-简介
查看>>
ADODB类库操作查询数据表
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
sed处理文本
查看>>
jquery 操作iframe、frameset
查看>>
解决vim中不能使用小键盘
查看>>
jenkins权限管理,实现不同用户组显示对应视图views中不同的jobs
查看>>