排序--冒泡排序

原创 2016年06月01日 17:01:40

冒泡的时间复杂度是O(N^2)

C# 版

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BubbleSort_CSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = { 9, 1, 5, 8, 2, 7, 4, 6, 2 };
            BubbleSort_CSharp(arr);
            for(int i = 0; i < arr.Length; ++ i)
            {
                Console.Write(arr[i]);
            }
            Console.ReadLine();
        }

        static void BubbleSort_CSharp(int[] arr)
        {
            bool isSorted = true; // 为了避免无意义的循环
            for(int i = 0; i < arr.Length && isSorted; ++ i)
            {
                isSorted = false;
                for(int j = arr.Length - 2; j >= i; -- j)
                {
                    if(arr[j] > arr[j + 1])
                    {
                        int tmp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = tmp;
                        isSorted = true; // 如果有数据交换,说明[i, arr.length - 1]这段区间是乱序的,要继续执行第一个for循环
                    }
                }
            }
        }
    }
}

C 版

#include "stdafx.h"

void C_BubbleSort(int* arr, int length)
{
	bool isSorted = true; // 为了避免无意义的循环  
	for (int i = 0; i < length; ++i)
	{
		for (int j = length - 2; j >= i; --j)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j] ;
				arr[j] = arr[j + 1] ;
				arr[j + 1] = tmp;
				isSorted = true; // 如果有数据交换,说明[i, arr.length - 1]这段区间是乱序的,要继续执行第一个for循环 
			}
		}
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	int arr[] = {9, 1, 5, 6, 3, 7, 4, 8, 2};
	int length = 9 ;
	C_BubbleSort(arr, length);
	
	for (int i = 0; i < length; ++i)
	{
		printf("%d,", arr[i]);
	}
	printf("\n");

	getchar();

	return 0;
}



C++ 版

#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace::std;

void Cpp_BublleSort(vector<int>& vec)
{
	bool isSorted = true;
	for (int i = 0; i < vec.size() && isSorted; ++i)
	{
		isSorted = false; // 为了避免无意义的循环  
		for (int j = vec.size() - 2; j >= i; --j)
		{
			if (vec[j] > vec[j + 1])
			{
				int tmp = vec[j];
				vec[j] = vec[j + 1];
				vec[j + 1] = tmp;
				isSorted = true; // 如果有数据交换,说明[i, arr.length - 1]这段区间是乱序的,要继续执行第一个for循环  
			}
		}
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	int arr[] = {9, 1, 5, 6, 3, 7, 4, 8, 2};

	vector<int> vec(arr, arr + 9);
	Cpp_BublleSort(vec);
	for (int i = 0 ; i < vec.size(); ++i)
	{
		cout << vec[i] << " ";
	}
	cout << endl;
	
	system("pause");
	return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

自己写的冒泡排序算法

  • 2017年12月07日 14:25
  • 2KB
  • 下载

冒泡排序以及二分法查询

  • 2017年11月09日 23:15
  • 275B
  • 下载

程序员面试系列——冒泡排序

虽然冒泡排序是排序算法里面最简单的一种,但是不可轻视。我在应届生的面试和社招的面试中,都被问到了冒泡排序。基本思想:冒泡排序属于蛮力法,它比较表中的相邻元素,如果它们是逆序的话就交换它们的位置。重复多...

冒泡排序VB版

  • 2015年03月28日 21:43
  • 27KB
  • 下载

vs2010 冒泡排序

  • 2015年05月10日 15:48
  • 1.09MB
  • 下载

随机从1~100中选出10个数并进行冒泡排序

一、老原则,首先看一下效果图。 二、那么什么是冒泡排序呢它又是怎样进行排序的呢 我们首先来看一下他的定义:冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比...

二分查找算法和冒泡排序算法

  • 2015年04月22日 11:27
  • 942KB
  • 下载

奇偶冒泡排序

  • 2016年03月30日 22:08
  • 1KB
  • 下载

冒泡排序法(BubbleSort)的改进以及效率比较

冒泡排序法(BubbleSort)的改进以及效率比较

冒泡排序C语言

  • 2016年02月18日 18:57
  • 652B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序--冒泡排序
举报原因:
原因补充:

(最多只允许输入30个字)