选择法
在第一次排序过程中将第一个数字和最小的数字进行了置换位置
而第二次排列过程中,将第二个数字和剩下的数字中最小的进行了置换位置
以此类推
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);
}