10月24 日 c语言 选择法 冒泡法 交换法 插入法折半法 汇总
来源:互联网 发布:mac os 配置 postman 编辑:程序博客网 时间:2024/06/14 08:23
选择法
在第一次排序过程中将第一个数字和最小的数字进行了置换位置
而第二次排列过程中,将第二个数字和剩下的数字中最小的进行了置换位置
以此类推
for(i=0;i<9;i++) //设置外层循环下标0-8的元素
{
t=a[i]; //设置当前元素为最小值
h=i; //记录元素位置
for(j=i+1;j<10;j++) //内层元素i+1到9
{
if(a[j]<t) //如果当前元素比最小值小
{
t=a[j]; //重新设置最小值
h=j; //记录元素的位置
}
}
冒泡法
在第一次排序的过程中,将最小的数字移动到第一的位置,并将其他数字依次向后移动,
在第二次排序过程中,从第二个数字开始的剩余的数字中选择最小的数字,并将其移动到第二的位置,剩余的数字依次向后移动,
依次类推
for(i=1;i<10;i++) //外循环元素下标1-9
{
for(j=9;j>=i;j--) //内层循环元素下标i-9
{
if (a[j]<a[j-1]) //如果前一个数比后一个数大
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
}
交换法
在第一次排序过程中将第一个数与后边的数依次进行比较
然后使用相同的方法从当前第二个数字开始,继续和后面的数进行比较如果遇到比当前数字小的数字则交换位置
依次类推。
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(a[j]<a[i])
{
交换
}
}
}
插入法
在第一次排序过程中将第一个数取出来,并放在第一个位置
然后取出第二个数与第一个数进行比较,如果第二个数小于第一个数,则将第二个数排在第一个数之前,否则将第二个数排在第一个数之后
如果当前数较小,还要与之前的数字进行比较
依次类推
for(i=1;i<10;i++)
{
t=a[i] //设置插入值
h=i-1;
while((h>=0)&&(t<a[h]))
{
a[h+1]=a[h];
h--;
}
a[h+1]=t;
}
折半法
首先获取中间元素,从左右两侧分别取出数组元素与中间值进行比较
如果左侧取出的值比中间小,则取下一个数组元素与中间值进行比较
如果左侧取出的值比中间值大,则交换两个互相比较的数组元素值
右侧的比较正好与左侧相反
当右侧取出的值比中间大的时候,取出前一个数组元素的值与中间值进行比较
如果右侧取出的值比中间值小,则交换两个互相比较的数组元素值
当中间值两侧的数组都比较一遍以后,数组以第一个元素为起点
以中间值为终点,以上述的方法进行比较。当比较完成后,继续以折半的方式进行比较,
直到将一组数字按从小到大排序为止
void CelerityRun(int left, int right ,int array[])
int i,j;
int middle,t;
i=left;
j=right;
middle=array[(left+right)/2];
do
{
while((array[i]<middle)&&(i<right))
i++;
while((array[j]>middle)&&(j>left))
j--;
if(i<=j)
{
t=array[i];
array[i]=array[j];
array[j]=t;
j++;
i--;
}
}while (i<=j);
if (left<j)
CelerityRun(left,array);
if (right>j)
CelerityRun(i,right,array);
}
在第一次排序过程中将第一个数字和最小的数字进行了置换位置
而第二次排列过程中,将第二个数字和剩下的数字中最小的进行了置换位置
以此类推
for(i=0;i<9;i++) //设置外层循环下标0-8的元素
{
t=a[i]; //设置当前元素为最小值
h=i; //记录元素位置
for(j=i+1;j<10;j++) //内层元素i+1到9
{
if(a[j]<t) //如果当前元素比最小值小
{
t=a[j]; //重新设置最小值
h=j; //记录元素的位置
}
}
冒泡法
在第一次排序的过程中,将最小的数字移动到第一的位置,并将其他数字依次向后移动,
在第二次排序过程中,从第二个数字开始的剩余的数字中选择最小的数字,并将其移动到第二的位置,剩余的数字依次向后移动,
依次类推
for(i=1;i<10;i++) //外循环元素下标1-9
{
for(j=9;j>=i;j--) //内层循环元素下标i-9
{
if (a[j]<a[j-1]) //如果前一个数比后一个数大
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
}
交换法
在第一次排序过程中将第一个数与后边的数依次进行比较
然后使用相同的方法从当前第二个数字开始,继续和后面的数进行比较如果遇到比当前数字小的数字则交换位置
依次类推。
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(a[j]<a[i])
{
交换
}
}
}
插入法
在第一次排序过程中将第一个数取出来,并放在第一个位置
然后取出第二个数与第一个数进行比较,如果第二个数小于第一个数,则将第二个数排在第一个数之前,否则将第二个数排在第一个数之后
如果当前数较小,还要与之前的数字进行比较
依次类推
for(i=1;i<10;i++)
{
t=a[i] //设置插入值
h=i-1;
while((h>=0)&&(t<a[h]))
{
a[h+1]=a[h];
h--;
}
a[h+1]=t;
}
折半法
首先获取中间元素,从左右两侧分别取出数组元素与中间值进行比较
如果左侧取出的值比中间小,则取下一个数组元素与中间值进行比较
如果左侧取出的值比中间值大,则交换两个互相比较的数组元素值
右侧的比较正好与左侧相反
当右侧取出的值比中间大的时候,取出前一个数组元素的值与中间值进行比较
如果右侧取出的值比中间值小,则交换两个互相比较的数组元素值
当中间值两侧的数组都比较一遍以后,数组以第一个元素为起点
以中间值为终点,以上述的方法进行比较。当比较完成后,继续以折半的方式进行比较,
直到将一组数字按从小到大排序为止
void CelerityRun(int left, int right ,int array[])
int i,j;
int middle,t;
i=left;
j=right;
middle=array[(left+right)/2];
do
{
while((array[i]<middle)&&(i<right))
i++;
while((array[j]>middle)&&(j>left))
j--;
if(i<=j)
{
t=array[i];
array[i]=array[j];
array[j]=t;
j++;
i--;
}
}while (i<=j);
if (left<j)
CelerityRun(left,array);
if (right>j)
CelerityRun(i,right,array);
}
阅读全文
0 0
- 10月24 日 c语言 选择法 冒泡法 交换法 插入法折半法 汇总
- 插入冒泡选择以及折半法排序
- 排序:插入排序/选择排序/交换排序(冒泡法)
- C语言折半查找法练习题冒泡排序
- C语言排序实例(选择、冒泡、插入、折半、快速)
- C语言排序实例(选择、冒泡、插入、折半、快速)
- c语言排序实例(选择、冒泡、插入、折半、快速)
- C语言排序实例(选择、冒泡、插入、折半、快速)
- C语言 选择排序、折半查找法与二维数组
- 排序算法实例(冒泡法排序、选择法排序、直接插入排序 、希尔法排序、折半插入排序)
- C语言中冒泡法、选择法、插入法三种常见排序算法分析
- C语言中冒泡法、选择法、插入法三种常见排序算法分析
- C语言 冒泡法排序,选择法排序和插入排序
- C语言中冒泡法、选择法、插入法三种常见排序算法分析
- C语言中冒泡法、选择法、插入法三种常见排序算法分析
- C语言中冒泡法、选择法、插入法三种常见排序算法
- C语言:冒泡排序、选择排序、快速排序、插入排序、“shell”法
- C语言折半查找法
- 集合框架常用子类构架体系
- 2017-难忘的秋招经历
- HTTP Status 503
- 安卓二级列表的适配器 带优化的 解决二级列表里添加了自定义view以后不能点击展开的问题
- SpringMVC文件上传
- 10月24 日 c语言 选择法 冒泡法 交换法 插入法折半法 汇总
- 从Wikidata上面获取数据及关系的几种方法
- 简单的angular实现一个购物车小功能
- 浅谈HTTP中Get、Post、Put与Delete的区别
- hdu 1561
- js把html中的table数据导出到Excel中
- PAT刷题:1019. General Palindromic Number (20)
- 【bzoj1821】[JSOI2010]Group 部落划分
- mybatis分页多条件查询指定时间段数据的sql语句