单链表的冒泡排序!!求解答!!

2022-12-25 06:15

1个回答
{
int value;
Node* next;
};void Sort(Node* head)
{
Node* tail = NULL; while(tail != head->next)
{
Node* pre = head;
Node* cur = pre->next;
while(cur != tail && cur->next != tail)
{
if( cur->value > cur->next->value )
{
//交换当前节点和后一个节点
pre->next = cur->next;
cur->next = cur->next->next;
pre->next->next = cur;
}
pre = pre->next;
cur = pre->next;
} tail = cur;
}
}void main()
{
Node* head = new Node();
Node* cur = head; //使用带表头的链表
int n = 10;
//初始化链表数据
for( int i = n; i >0; i-- )
{
Node* node = new Node();
node->value = i;
cur->next = node;
cur = node;
} //排序 Sort(head);
}
相关问答
c 链表冒泡排序找错
2个回答2022-09-24 23:26
struct student *pai(struct student *head) { struct student *ptemp,*pPre,*pCurr,*pLastCur; ptemp =...
全文
关于冒泡法链表排序
2个回答2022-09-16 15:25
P 指向 的是没有交换前的 最后个节点 有可能和 倒数第二个 交换 所以p不一定是最后一个节点
什么叫冒泡排序
5个回答2022-09-26 22:07
举个例子: 比如说有一组数组:1,6,3,9,7,4 想要给它做排序,把这个数组从小到大的排列 这里就可以使用冒泡算法(就像河里的泡向上冒,小的泡会在大的泡的上面一样) 这里冒泡排序就是小的数字一个...
全文
冒泡排序
1个回答2023-08-09 09:10
要看你的冒泡法是升序还是降序,不过大体都是一样的,主要就是那两个for循环那里的问题。我这里用的降序: #include void main() { int n[10]; int i,...
全文
冒泡排序法是如何排序的?
2个回答2022-10-13 06:37
其实很简单,就是一个一个进行对比如果ab就把两个变量进行交换,使得最大/最小的排在前面。 2 4 3 5 1 五个数 21 不交换 43521 然后最小的1就一定会在最后 然后比较前4个数,4>3,3...
全文
冒泡排序法
1个回答2022-07-27 23:50
用冒泡排序法对n个关键码排序,在最好的情况下也就是数据按关键码排序次序有序,只需要依次从头到尾挨个比较就可以了,因此比较次数为n-1次,关键码不移动,所以0次移动 在最坏的情况下为关键码按排序顺序完全...
全文
冒泡排序法是什么
1个回答2023-08-09 09:10
冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳...
全文
什么叫冒泡排序法
2个回答2023-01-24 10:50
冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳...
全文
什么叫做冒泡排序?
1个回答2022-09-30 22:22
冒泡排序★★★★★★ #include #define N 5 void main() { int i,j; int grade[N],temp; printf("输入5个数\n"); ...
全文