排序--冒泡排序

原创 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;
}



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

冒泡排序同时对下标进行排序

#include #include #include using namespace std; #define size 10 struct temp { int numbe...
  • Iamduoluo
  • Iamduoluo
  • 2010年07月15日 19:45
  • 1303

顺序表的冒泡排序算法及二分法查找代码实现

本文主要实现了比较经典的冒泡排序算法(对已经有序或者基本有序的顺序表复杂度大大降低),和二分法查找,各位看官看代码吧//冒泡排序算法及二分法查找 #include "stdio.h" typedef ...
  • guguizi
  • guguizi
  • 2016年05月06日 18:32
  • 2000

冒泡排序可以排序多个字符串

在实现多个字符串的排序之前,先来回顾一下冒泡排序: 算法原理: 每次对相邻的两个元素进行比较,若前者大于后者则交换,如此一趟下来最后一个则是最大的一个元素;重复以上步骤,除了已经确定位置的...
  • lemonwxj
  • lemonwxj
  • 2016年04月21日 18:24
  • 1488

排序——冒泡排序(三种方法)

冒泡排序的基本思想:         在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的...
  • laoniu_c
  • laoniu_c
  • 2014年08月15日 12:13
  • 936

ArrayList实现冒泡排序

用ArrayList实现冒泡排序public class ArrayListSort { public static void main(String[] args) { Ar...
  • mhtqq809201
  • mhtqq809201
  • 2016年06月13日 11:31
  • 3313

vb冒泡排序函数

Sub   BubbleSort(List()   As   Long,   Number   As   Long,   DataCount   As   Long,   SmallToBig   A...
  • zxs820329
  • zxs820329
  • 2007年02月15日 13:05
  • 4734

冒泡排序和选择排序法的图示解析

思路:在进行冒泡法排序(升序)时,需要将数组元素(len)两两比较,如果 前面的元素大于后面的元素,则交换两个数,否则,比较下一个元素和它的下一个元素的大小,依次执行,执行一次循环,可以找到当前...
  • qq_34992845
  • qq_34992845
  • 2016年11月22日 00:25
  • 1565

最简单的排序算法之一冒泡排序----js实现

1. 算法步骤 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有...
  • wall1999
  • wall1999
  • 2017年02月15日 11:26
  • 5578

如何使用汇编语言实现冒泡排序?

怎么使用汇编语言实现冒泡排序    我们先想想C语言里是怎么实现的冒泡排序        #include int main() { int arr[10]; int br...
  • cqp_snow
  • cqp_snow
  • 2017年04月27日 20:54
  • 870

C#实现冒泡排序之对泛型排序

在前面的文章中我们讲述了C#如何实现冒泡排序!那么有没有想过如何实现对任意的数据类型进行冒泡排序呢?这里我们将就此问题进行解答!首先我们了解到冒泡排序的本质就是升序或者降序排列一个数组的元素!我们首先...
  • lxt610
  • lxt610
  • 2017年04月24日 14:10
  • 808
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序--冒泡排序
举报原因:
原因补充:

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