zoukankan      html  css  js  c++  java
  • 鸡尾酒排序Cocktail Sort (双向冒泡排序)

    鸡尾酒排序

    鸡尾酒排序思路,先从左边开始进行冒泡排序,第一趟冒泡排序完,最大值在的数组的最右端,然后进行第二趟排序,第二趟排序从右边开始排序,第二趟结束时,最小值在数组最左端,以此类推,每一趟排序完都能将一个在当前数组(不包括之前排序得到的最大或者最小的数)中最小或者最大的数放在对应的位置。

    算法过程

    代码实现

    #include <iostream>
    
    using namespace std;
    
    void Swap(int array[], int i, int j)
    {
    	int temp = array[i];
    	array[i] = array[j];
    	array[j] = temp;
    }
    
    void cocktailSort(int array[], int length)
    {
    	if (array == nullptr || length <= 0)
    		return;
    	int left = 0;
    	int right = length - 1;
    	while (left < right)
    	{
    		//第一次 左边开始 
    		for (int i = left; i < right; i++)
    		{
    			if (array[i] > array[i + 1])
    			{
    				Swap(array, i, i + 1);		//左边大于右边,交换
    			}
    		}
    		//第二次 右边开始
    		right--;
    		for (int i = right; i > left; i--)
    		{
    			if (array[i - 1] > array[i])
    				Swap(array, i - 1, i);		//左边大于右边, 交换
    		}
    		left++;
    	}
    }
    int main()
    {
    	int arr[] = { 5,9,8,7,6 };
    	int length = sizeof(arr) / sizeof(int);
    	cocktailSort(arr, length);
    	for (int i = 0; i < length; i++)
    		cout << arr[i] << " ";
    	cout << endl;
    }
    
    
  • 相关阅读:
    P1087 FBI树 二叉树
    回顾测试和测试方法
    Postman
    执行用例的思路、批量执行(可选)、定时任务
    unittest平台分析与建表:
    HTMLTestRunner源码
    665. Non-decreasing Array
    661. Image Smoother
    643. Maximum Average Subarray I
    628. Maximum Product of Three Numbers
  • 原文地址:https://www.cnblogs.com/izzwhf/p/11275446.html
Copyright © 2011-2022 走看看