交换排序 -- 冒泡排序、快速排序

发布时间:2023年12月26日

冒泡排序

// 冒泡排序
void BubbleSort(RecType R[], int n)
{
?? ?int i, j;
?? ?for (i = 0; i < n - 1; i++)
?? ??? ?for (j = n - 1; j > i; j--)
?? ??? ??? ?if (R[j].key < R[j - 1].key)
?? ??? ??? ??? ?swap(R[j], R[j - 1]);
}
void BubbleSort1(RecType R[], int n)
{
?? ?int i, j;
?? ?bool exchange;
?? ?for (i = 0; i < n - 1; i++)
?? ?{
?? ??? ?exchange = false;
?? ??? ?for (j = n - 1; j > i; j--)
?? ??? ??? ?if (R[j].key < R[j - 1].key)
?? ??? ??? ?{
?? ??? ??? ??? ?swap(R[j], R[j - 1]);
?? ??? ??? ??? ?exchange = true;
?? ??? ??? ?}
?? ??? ?if (!exchange)
?? ??? ??? ?return;
?? ?}
}

快速排序

//快速排序
int partition(RecType R[], int s, int t)
{
?? ?int i = s, j = t;
?? ?RecType tmp = R[i];
?? ?while (i < j) //i=j截止
?? ?{
?? ??? ?while (j > i && R[j].key >= tmp.key) //右到左 找到小于tmp的
?? ??? ??? ?j--;
?? ??? ?R[i] = R[j];
?? ??? ?while (j > i && R[j].key <= tmp.key) //左到右 找到大于tmp的
?? ??? ??? ?i++;
?? ??? ?R[j] = R[i];
?? ?}
?? ?R[i] = tmp;
?? ?return i;
}
void QuickSort(RecType R[], int s, int t)
{
?? ?int i;
?? ?if (s < t)
?? ?{
?? ??? ?i = partition(R, s, t);
?? ??? ?QuickSort(R, s, i - 1);
?? ??? ?QuickSort(R, i + 1, t);
?? ?}
}

文章来源:https://blog.csdn.net/TXLTF/article/details/135201889
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。