函数冒号排序法,不确定数组

定义一个函数bubble_sort,实现对数量不确定的一组数据采用冒泡排序法进行排序,返回结果为列表对象。同时,该函数有一个可选参数ascending,默认值为True,当该参数为True时,函数进行升序排序;该参数为False时,函数进行降序排序。

下面是一个实现冒泡排序的函数bubble_sort,可以对数量不确定的一组数据进行排序,同时具有升序或降序的选项:

def bubble_sort(arr, ascending=True):
    n = len(arr)
    for i in range(n-1):
        for j in range(n-i-1):
            if ascending:
                if arr[j] > arr[j+1]:
                    arr[j], arr[j+1] = arr[j+1], arr[j]
            else:
                if arr[j] < arr[j+1]:
                    arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

这个函数接受两个参数,第一个参数arr是需要排序的数组,第二个参数ascending是一个可选参数,用来决定是进行升序排序还是降序排序,其默认值为True,即升序排序。在函数内部,使用了常规的冒泡排序算法。

使用示例:

arr = [5, 2, 8, 3, 1]
sorted_arr = bubble_sort(arr)
print(sorted_arr)   # [1, 2, 3, 5, 8]

arr = [5, 2, 8, 3, 1]
sorted_arr = bubble_sort(arr, ascending=False)
print(sorted_arr)   # [8, 5, 3, 2, 1]

以上是一个简单的实现,可以根据实际需求进行调整和修改。

def bubble_sort(arr, ascending=True):
    n = len(arr)
    for i in range(n-1):
        for j in range(n-i-1):
            if ascending ^ (arr[j] < arr[j+1]):
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

如果求异或那一行理解起来太困难,也可以用三元表达式
if (arr[j] > arr[j+1]) if ascending else (arr[j] < arr[j+1]):

def bubble_sort(data, ascending=True):
    """
    实现冒泡排序
    :param data: 待排序的列表
    :param ascending: 是否升序排序,默认为True
    :return: 排序后的列表对象
    """
    n = len(data)
    for i in range(n):
        for j in range(n - i - 1):
            if ascending:
                if data[j] > data[j + 1]:
                    data[j], data[j + 1] = data[j + 1], data[j]
            else:
                if data[j] < data[j + 1]:
                    data[j], data[j + 1] = data[j + 1], data[j]
    return data

该函数接受一个列表对象作为参数,然后根据可选参数ascending的值来确定是进行升序排序还是降序排序,最后返回排序后的列表对象。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7663133
  • 你也可以参考下这篇文章:自己完成一个冒泡排序(bubble_sort),可以完成不同类型数据的排序
  • 除此之外, 这篇博客: C语言冒泡排序中的 1、自定义bubble_sort函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 同样采用上述代码,对其写入函数:

    //继续以此程序来进行解释:
    #include<stdio.h>
    void bubble_sort(int arr[],int sz)//参数类型解释②
    {
    	for (int i = 0; i < sz-1; i++)
    	{
    		for (int j = 0; j <sz-1-i; j++)
    		{
    			if (arr[j] > arr[j + 1])
    			{
    				int temp = arr[j];
    				arr[j] = arr[j + 1];
    				arr[j + 1] = temp;
    			}
    		}
    	}
    }
    int main()
    {
    	int arr[] = { 9,8,7,4,5,6,1,2,3,0 };
    	int sz = sizeof(arr) / sizeof(arr[0]);//变量sz位置及计算注意事项①
    	bubble_sort(arr,sz);//参数类型解释②
    	for (int i = 0; i < 10; i++)//输出交换后的数组
    	{
    		printf("%d  ", arr[i]);
    	}
    	return 0;
    }
    
def bubble_sort(nums, ascending=True):
    """对数组进行升序或降序排序"""
    n = len(nums)
    for i in range(n):
        for j in range(0, n-i-1):
            if ascending:
                if nums[j] > nums[j+1]:
                    nums[j], nums[j+1] = nums[j+1], nums[j]
            else:
                if nums[j] < nums[j+1]: 
                    nums[j], nums[j+1] = nums[j+1], nums[j]
    return nums