欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 数据结构第八章交换排序-冒泡排序(C语言代码)

数据结构第八章交换排序-冒泡排序(C语言代码)

2024/11/30 12:41:20 来源:https://blog.csdn.net/2305_78057683/article/details/143919975  浏览:    关键词:数据结构第八章交换排序-冒泡排序(C语言代码)
#define MAX_SIZE 20
typedef struct
{int key;
}ElemType;
typedef struct
{ElemType* R;int length;
}Sqlist;void Create(Sqlist* L)
{int i, n;printf("请输入数据个数,不能超过%d\n", MAX_SIZE);scanf("%d", &n);while (n>MAX_SIZE){printf("数据个数超过总数,请重新输入\n");scanf("%d", &n);}L->R = (ElemType*)malloc(sizeof(ElemType) * (MAX_SIZE + 1));L->length = 0;printf("请输入元素内容:\n");for (i = 0; i < n; i++){scanf("%d", &L->R[i].key);L->length++;}
}
void BubbleSort(Sqlist* L)
{int i, j;for (i = 0; i < L->length - 1; i++){for (j = 0; j < L->length - 1 - i; j++){if (L->R[j].key > L->R[j + 1].key){ElemType temp = L->R[j + 1];L->R[j + 1] = L->R[j];L->R[j] = temp;}}}
}
void printNode(Sqlist L)
{for (int i = 0; i < L.length; i++){printf("%d ", L.R[i].key);}
}
int main()
{Sqlist L;Create(&L);BubbleSort(&L);printNode(L);return 0;
}

4162e40239a04a3ebb56bf1243e0ed34.png

链式存储结构如下:

typedef struct Node
{int data;struct Node* next;
}Node;
Node* Create(int data)
{Node* newnode = (Node*)malloc(sizeof(Node));if (newnode == NULL){perror("error:");exit(1);}newnode->data = data;newnode->next = NULL;
}
Node* CreateArr(int arr[], int size)
{Node* newnode = Create(arr[0]);Node* temp = newnode;for (int i = 1; i < size; i++){temp->next = Create(arr[i]);temp = temp->next;}return newnode;
}
void printNode(Node* node)
{Node* temp = node;while (temp){printf("%d->", temp->data);temp = temp->next;}printf("NULL\n");
}
void FreeNode(Node* node)
{Node* temp = node;while (temp){Node* pcur = temp->next;free(temp);temp = pcur;}
}
void BubbleSort(Node** headRef)
{Node* head = *headRef;Node* end = NULL;while (head->next != end){Node* temp = head;while (temp->next!=end){Node* pcur = temp->next;if (temp->data >pcur->data){int node = pcur->data;pcur->data = temp->data;temp->data = node;}temp = temp->next;}end = temp;//9 8 .....}
}
int main()
{int arr[] = { 4,3,5,1,9,6 };int size = sizeof(arr) / sizeof(arr[0]);Node* node = CreateArr(arr, size);printf("初始遍历:\n");printNode(node);BubbleSort(&node);printf("排序后的遍历:\n");printNode(node);FreeNode(node);return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com