gpt4 book ai didi

c - 这段代码是哪种排序技术?

转载 作者:行者123 更新时间:2023-12-04 09:31:11 25 4
gpt4 key购买 nike

有人让我对一个数组进行排序,我是这样做的。现在我们正在争论这是哪种排序技术。在向我解释了他所知道的不同分类技术后,他将其归类为气泡,但我认为不是!但它确实排序了!

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]);
}
}

这是泡沫,据我说他同意,但也将前者归类为相同。我的意思是它必须有一个名字!

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;
}
}

}

最佳答案

它与冒泡排序最相似。在这里阅读更多:http://en.wikipedia.org/wiki/Bubble_sort .

你的循环是不同的,但它仍然有效,因为你在每次循环中从 j 迭代到 i,而不是迭代整个集合。

例如:

第一次迭代:i = 0。第二次循环不执行。

{4,2,1,3,5,7,5,6,8}

第二次迭代:i = 1。第二次循环比较 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}

因此,您的循环与冒泡排序的不同之处在于它会将当前项与集合中的最后一项进行比较,但该技术仍然有效。干得好,我以前从未见过这种变体,并且在测试之前认为它不会正确排序。

关于c - 这段代码是哪种排序技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18147001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com