- 浏览: 75400 次
- 性别:
- 来自: 北京
#include <stdio.h> void bubble_sort(int a[], int n) { int i,j,tmp; for(i=0;i<n-1;i++) for(j=0;j>n-1-i;j++) if(a[j]>a[j+1]) { tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; } } int partition(int a[], int low, int high) { int pivot=a[low]; while(low<high) { while(low<high && a[high]>=pivot)--high; a[low]=a[high]; while(low<high && a[low]<=pivot)++low; a[high]=a[low]; } a[low]=pivot; return low; } void qsort(int a[], int low, int high) { int pivot; if(low<high) { pivot=partition(a,low,high); partition(a,low,pivot-1); partition(a,mid+1,high); } } void quick_sort(int a[], int n) { qsort(a,0,n-1); }
发表评论
-
排序算法---计数排序
2011-11-27 14:57 608#include <stdio.h> vo ... -
排序算法---归并排序
2011-11-26 19:33 747#include <stdio.h> vo ... -
排序算法---选择排序(简单插入排序、堆排序)
2011-11-26 19:31 647#include <stdio.h> vo ... -
排序算法---插入排序(简单排序、shell排序)
2011-11-26 19:29 649#include <stdio.h> vo ... -
删除字符串中的特定字符和重复字符
2011-11-26 13:45 664#include <stdio.h> vo ... -
Linux编程-多线程、同步和互斥(转载)
2011-11-14 15:27 1209http://www.cnblogs.com/skynet/a ... -
寻找字符串中的最大数字子串
2011-09-22 17:17 1519#include <stdio.h> int f ... -
删除子字符串
2011-09-21 15:27 603#include <stdio.h> #incl ... -
c语言随机数
2011-09-18 17:15 685#include <stdio.h> #i ... -
带头结点有序单链表的合并
2011-09-08 14:21 1184typedef int Item; typedef s ... -
链表逆序的递归/非递归算法
2011-09-01 23:37 1411/** *链表逆序的递归/非递归算法 */ # ... -
递归算法---字符串---全/部分组合和全排列
2011-08-30 23:01 1222#include <stdio.h> #i ... -
递归算法---0-1背包问题(面试宝典)
2011-08-28 21:11 1898/** *正整数n,m,从数列1、2、3、...、n中随 ... -
递归算法---字符串全组合(面试宝典)
2011-08-28 17:24 1257/** *求一字符串所有字串的组合 */ #i ... -
递归算法---求解多元一次方程
2011-08-28 10:38 1896/** * 求解x1+x2+x3+...+x10 = ... -
(zz)关于类的sizeof
2011-08-27 18:16 587http://blog.sina.com.cn/s/blog_ ... -
(zz)结构体字节对齐原则
2011-08-27 17:53 1578结构体默认的字节对齐一般满足三个准则: 结构体变量的首 ... -
list.h from linux-2.4
2011-08-25 09:59 607#ifndef _LIST_H_ #define _L ... -
The C Programming Lang (K&R) hash table
2011-08-25 09:52 936hash.h #include <stdio.h ... -
Josephus环
2011-08-23 11:20 699/*************************** ...
相关推荐
在实际应用中,冒泡排序效率较低,时间复杂度为O(n^2),对于大数据量或性能要求高的场景,通常会选择其他更高效的排序算法,如快速排序、归并排序或堆排序等。然而,由于其简单易懂,冒泡排序在教学和理解排序算法...
冒泡排序是一种基础且经典的排序算法,它的基本思想是通过不断地交换相邻的逆序元素,使得每一轮排序后,最大的元素“浮”到数组的末尾。这个过程就像水底下的气泡逐渐升至水面一样,因此得名“冒泡排序”。 在Java...
快速排序是一种高效的排序算法,由C.A.R. Hoare在1960年提出。它的基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别...
冒泡排序是一种基础且经典...在实际应用中,更高效的排序算法如快速排序、归并排序和堆排序通常更受欢迎,尤其是在处理大数据集时。不过,了解和掌握冒泡排序有助于理解排序算法的基础,以及如何通过优化提升算法性能。
冒泡排序算法是一种简单的排序算法,它的工作原理是通过不断地比较相邻元素,并交换它们以达到排序的目的。冒泡排序算法的时间复杂度为O(n^2),因此它适合小规模的数据排序。 2.选择排序算法 选择排序算法也是一种...
本篇文章将详细讨论几种常见的排序算法:选择排序、冒泡排序、插入排序、合并排序以及快速排序,分析它们的算法原理、时间效率,并通过经验分析验证理论分析的准确性。 **1. 选择排序(Selection Sort)** 选择排序...
快速排序和冒泡排序是两种常见的排序算法,它们在计算机科学中扮演着重要的角色,特别是在数据处理和优化程序性能方面。本篇文章将深入探讨这两种排序算法的原理、效率以及它们在C#编程语言中的实现。 首先,让我们...
冒泡排序是一种基础且历史悠久的排序算法,它通过重复遍历待排序的序列,比较相邻元素并根据需要交换它们的位置,来逐步将序列中的大值“冒”到序列的末尾。在C#中实现冒泡排序,可以深入了解C#的基础语法、控制流...
本篇文章主要探讨了如何在VC++环境中利用多线程技术来实现三种经典的排序算法:冒泡排序、快速排序和归并排序,并对它们的性能进行了比较。 首先,冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次...
冒泡排序(Bubble Sort)是一种简单的排序算法,其工作原理是通过重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列...
快速排序(Quick Sort)是一种分治思想的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到...
1. **冒泡排序**:冒泡排序是一种简单直观的排序算法,通过不断交换相邻的错误顺序元素来逐步完成排序。它重复地走访过要排序的元素,依次比较每一对相邻元素,如果它们的顺序错误就把它们交换过来。走访元素的工作...
根据给定的信息,本文将详细解释C#中的几种基本排序算法:选择排序、冒泡排序、快速排序、插入排序、希尔排序以及归并排序的基本原理和实现方式。 ### 一、选择排序(Selection Sort) #### 算法原理 选择排序是一...
本文将深入探讨四种在C++中实现的常见排序算法:插入排序、冒泡排序、堆排序和快速排序。这些算法各有特点,适用于不同的场景,理解并掌握它们对于提升编程能力至关重要。 1. **插入排序**: 插入排序是一种简单的...
- 冒泡排序是最简单的排序算法之一,通过不断地交换相邻的逆序元素来逐步将大的元素“冒”到序列的顶端。每一轮排序会确定一个最大(或最小)元素的位置。 - 冒泡排序的时间复杂度同样为O(n²),空间复杂度为O(1)...
冒泡排序是一种基础且经典的排序算法,其工作原理是通过重复遍历待排序的数列,一次比较两个元素,如果他们的顺序(如从小到大、从大到小)错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也...
- 交换排序:如冒泡排序和快速排序。 - 选择排序:如简单选择排序和堆排序。 2. 非基于比较的排序算法:这类算法不依赖于元素间的比较,而是利用其他特性进行排序。例如,计数排序要求数据范围较小,基数排序...
本文将深入探讨标题和描述中提到的一些基本排序算法,包括选择排序、冒泡排序、插入排序、希尔排序、堆排序、快速排序以及归并排序,并结合C++编程语言进行讲解。 1. **选择排序(Selection Sort)** - 选择排序是一...
而对于大规模数据,无论是冒泡排序还是选择排序,效率都不如更高级的排序算法,如快速排序、归并排序或堆排序。 总的来说,冒泡排序和选择排序都是简单的排序算法,适合教学和理解排序的基本原理。在实际开发中,...