Chi*_*hah 2 c sorting bubble-sort
有人让我对数组进行排序,我做了如下操作.现在我们正在争论这是哪种排序技术.在向我解释他所知道的不同分类技术之后,他将其归类为泡泡,但我认为不是!但它确实排序!
C代码:
void sort(void){
int a[9]={4,2,1,3,5,7,5,6,8};
int i,j,temp;
for(i=0;i<9;i++)
{
for(j=0;j<i;j++)
{
if(a[j] > a[i])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for(i=0;i<9;i++)
{
printf("\n%d",a[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
根据他同意的我所说的这是泡沫,但也将前者归为同样的.我的意思是必须有一个名字!
for(i=0;i<9;i++)
{
for(j=0;j<8;j++)
{
if(a[j] > a[j+1])
{
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它与冒泡排序最相似.点击此处了解更多信息:http://en.wikipedia.org/wiki/Bubble_sort.
你的循环是不同的,但它仍然有效,因为你在每次传递中从j迭代到i,而不是迭代整个集合.
例如:
第一次迭代:i = 0.第二次循环不执行.
{4,2,1,3,5,7,5,6,8}
第二次迭代:i = 1.第二次循环comapres 4和2,切换它们.
{2,4,1,3,5,7,5,6,8}
第三次迭代:i = 2.第二次循环比较2和1,开关.比较4和1,进行切换.
{1,2,4,3,5,7,5,6,8}
第四次迭代:i = 3.第二次循环比较1和3,没有开关.比较2和3,没有开关.比较4和3,开关.
{1,2,3,4,5,7,5,6,8}
第五次迭代:i = 4.第二次循环比较1和5,没有开关.比较2和5,3和5,4和5,没有开关.
{1,2,3,4,5,7,5,6,8}
第六次迭代:i = 5.比较1和7,2和7,3和7,4和7,5和7,没有开关.
{1,2,3,4,5,7,5,6,8}
第七次迭代:i = 6.比较1和5,2和5,3和5,4和5,5和5,没有开关.比较7和5,开关.
{1,2,3,4,5,5,7,6,8}
第八次迭代:i = 7.比较1和6,2和6,3和6,4和6,5和6,5和6,没有开关.比较7和6,开关.
{1,2,3,4,5,5,6,7,8}
第九次迭代:i = 8.比较1和8,2和8,3和8,4和8,5和8,5和8,6和8,7和8,没有开关.排序已完成.
{1,2,3,4,5,5,6,7,8}
因此,您的循环与冒泡排序的不同之处在于它将当前项目与集合的最后一项进行比较,但该技术仍然有效.干得好,我以前从未见过这种变化,并且认为在测试之前它没有正确排序.