利用快速排序进行将数组序列从小到大排序

1 题目

功能:快速排序
描述:利用快速排序进行将数组序列从小到大排序

2 思路

在待排序的n个数据中取第 1 个数据作为基准值,将所有记录分为 3 组
使笫一组中各数据值均小于或等于基准值,第二组做基准值的数据,第三组中各数据值均人于或等于基准值,这便实现了第一趟分割,然后再对第一组和第三组分别重复上述方法。
依次类推;直到每组中只有一个记录为止

3 代码

#include <stdio.h> 
#include <stdlib.h>

/**
功能:快速排序
描述:利用快速排序进行将数组序列从小到大排序
**/

void qusort(int s[], int start, int end) {					// 自定义函数qusort()

    int i, j;												// 定义变量为基本整型
    i = start;												// 将每组首个元素赋给i
    j = end;												// 将每组末尾元素赋给j
    s[0] = s[start];										// 设置基准值
    while (i < j){
        while (i < j && s[0] < s[j])
            j--;											// 位置左移
        if (i < j){
            s[i] = s[j];									// 将s[j]放到s[i]的位置上
            i++;											// 位置右移
        }
        while (i < j && s[i] <= s[0])
            i++;											// 位置右移
        if (i < j){
            s[j] = s[i];									// 将大于基准值的s[j]放到s[i]位置
            j--;											// 位置右移
        }
    }
    s[i] = s[0];												// 将基准值放入指定位置
    if (start < i)
        qusort(s, start, j - 1);								// 对分割出的部分递归调用函数qusort()
    if (i < end)
        qusort(s, j + 1, end);
}

int main(int argc, char const *argv[]) {
    int a[11], i;												// 定义数组及变量为基本整型
    printf("请输入10个数:\n");
    for (i = 1; i <= 10; i++)
        scanf("%d", &a[i]);										// 从键盘中输入10个要进行排序的数
    qusort(a, 1, 10);											// 调用qusort()函数进行排序
    printf("排序后的顺序是:\n");
    for (i = 1; i <= 10; i++)
        printf("%5d", a[i]);										// 输出排好序的数组
	printf("\n");
}

示例结果:

$ gcc ex061.c -o demo
$ ./demo
请输入10个数:
45
12
76
2
45
16
34
61
24
90
排序后的顺序是:
    2   12   16   24   34   45   45   61   76   90
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用快速排序算法来实现将数组中的元素按从小到大输出。以下是一个示例代码: ``` function quickSort(arr) if #arr <= 1 then return arr end local pivot = arr[1] local left = {} local right = {} for i = 2, #arr do if arr[i] < pivot then table.insert(left, arr[i]) else table.insert(right, arr[i]) end end return table.concat({quickSort(left), {pivot}, quickSort(right)}) end local arr = {5, 3, 9, 1, 7} local sortedArr = quickSort(arr) for i = 1, #sortedArr do print(sortedArr[i]) end ``` 这段代码使用了递归的快速排序算法来对数组进行排序,最后将排序后的结果按顺序输出。 ### 回答2: 要将数组中的元素按从小到大输出,可以采用排序的方法。一种常见的排序算法是冒泡排序。 冒泡排序的基本思想是比较相邻的两个元素,如果它们的顺序不满足要求,则交换它们的位置。通过多次的比较和交换,最终将最大(或最小)的元素冒泡到数组的末尾。重复以上过程,直到所有元素都被排序。 具体实现时,可以使用两层循环。外层循环控制排序的次数,内层循环实现相邻元素的比较和交换。 以下是用冒泡排序数组元素从小到大输出的示例代码: ```python def bubble_sort(arr): n = len(arr) for i in range(n-1): # 外层循环控制排序次数 for j in range(n-i-1): # 内层循环实现相邻元素比较和交换 if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr # 调用函数进行排序 arr = [9, 5, 2, 7, 1, 3] sorted_arr = bubble_sort(arr) # 输出排序后的数组元素 for num in sorted_arr: print(num, end=" ") ``` 以上代码的输出结果为:1 2 3 5 7 9,即将原始数组 [9, 5, 2, 7, 1, 3] 的元素按从小到大输出。 ### 回答3: 要将数组中的元素按从小到大顺序输出,我们可以使用排序算法来实现。常见的排序算法有冒泡排序、选择排序、插入排序快速排序等。下面以快速排序为例来进行说明。 快速排序的基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小,然后再按此方法对这两部分数据分别进行快速排序,整个过程递归进行,最终使整个数组变为有序序列。 具体实现步骤如下: 1. 首先选择一个基准元素,可以选择数组的第一个元素。 2. 将数组分成两部分,小于等于基准元素的元素放在左边,大于等于基准元素的元素放在右边。 3. 递归地对左右两部分进行快速排序。 4. 最终得到的排序数组即为从小到大的有序序列。 以下是示例代码: ```python def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[0] left = [x for x in arr[1:] if x <= pivot] right = [x for x in arr[1:] if x > pivot] return quick_sort(left) + [pivot] + quick_sort(right) arr = [3, 1, 9, 2, 8, 5] sorted_arr = quick_sort(arr) print(sorted_arr) ``` 以上代码将会输出 `[1, 2, 3, 5, 8, 9]`,即将给定数组元素按从小到大顺序输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值