算法基础之排序(1)--冒泡排序 改进


 1     /**********************************************************************************************************
2 * Function : test
3 * Create Date : 2014/03/23
4 * Author : NTSK13
5 * Email : [email protected]
6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。
7 任何单位和个人不经本人允许不得用于商业用途
8 转载请注明 转自 http://blog.csdn.net/beijiwei
9 * Version : V0.1
10 * date : 2014/03/23
11 * history : V0.1
12 ***********************************************************************************************************
13
14 算法基础之排序(1)--冒泡排序 改进
15
16
17 基本思想: 对待排序的一组数据从前之后进行扫描,若发现相邻的两个数不同时,将这两个数进行交换.
18 升序和降序是同样道理.
19
20 假如待排序的一组数存于array[N],则需要对数组进行N-1次扫描
21
22 第1次扫描: array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换.
23 第2次扫描: array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换.
24 .
25 .
26 .
27 第N-1次扫描: array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换.
28 结束.
29
30 缺点: 如果N>>100很大,当在第3次扫描结束之后,发现数据已经按照要求排列好了, 则以后的操作就是浪费功夫.
31
32 改进: 在一次扫描时,设一个标志位,若某次扫描结束,标志位没有置位,则退出
33
34
35 **********************************************************************************************************/
36 #include<stdio.h>
37
38 int main()
39 {
40 int i=0,j=0,tmp=0,flag=0;
41 int array[10]={1,2,0,3,4,5,6,7,8,9};
42
43 printf("Before sort, The element of array is: \n");
44
45 for(i=0;i<10;i++) 47 printf("%d \t",array[i]); 49 /*********************************************************************************************************/
50 for(i=0;i<9;i++)
51 {
52 flag=0;
53 for(j=0;j<9;j++)
54 {
55 if(array[j]>array[j+1])
56 {
57 tmp=array[j];
58 array[j]=array[j+1];
59 array[j+1]=tmp;
60 flag=1;
61 }
62
63 }
64 if(flag==0)
65 break;
66 }
67 /*********************************************************************************************************/
68 printf("\n After sort, The element of array is: \n");
69 for(i=0;i<10;i++) 71 printf("%d \t",array[i]); 73
74 printf("\n");
75
76 return 0;
77 }

算法基础之排序(1)--冒泡排序 改进,码迷,mamicode.com

时间: 2025-01-13 09:14:36

算法基础之排序(1)--冒泡排序 改进的相关文章

算法基础之排序(2)--选择排序 改进

1 /********************************************************************************************************** 2 * Function : test 3 * Create Date : 2014/03/23 4 * Author : NTSK13 5 * Email : [email protected] 6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性

算法基础:排序与查找

1.直接插入排序 1.1.基本思想: 在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的:如此反复循环,直到全部排好顺序. 1.2.实现思路: INSERTION_SORT(A) for i = 2 to n j = i-1 key = A[i] while j > 0 && A[j] > key A[j+1] = A[j] j-- A[j+1] = key 1.3.算法实现: pub

算法基础之排序

排序是生活中经常面对的问题,而根据排序过程中借助的主要操作,我们把内排序分为:插入排序.交换排序.选择排序和归并排序.这些都是比较成熟的排序算法,我们学习这些排序算法主要目的是通过学习它们来提高我们编写算法的能力,以便于解决更多复杂和灵活的应用性问题. 冒泡排序(Bubble Sort) 基本思想:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止. 算法实现: void bubbleSort(sqList *list) { int i, j; int flag = TRUE; f

算法之常用排序:冒泡排序、选择排序

冒泡排序: 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 #!/bin/env python #_*_ coding:utf-8 _*_ #算法之冒泡排序 li = [13,22,6,99,11] for m in range(len(li)-1): if li[m] > li[m+1]: temp = li[m] li[m] = li[m+1] li[m+1] = temp #第一次# 13>22 —>pass #第二次# 22>6 ->li =

I学霸官方免费教程二十八:Java排序算法之选择排序和冒泡排序

选择排序 步骤一.选取一组数据中起始位置(下标)上的数据,和其后的各个位置(下标)上数据进行比较:如果起始位置(下标)上的数据大(升序)或小(降序),就将两个位置上的数据进行交换:这样完成一轮比较之后,起始位置上的数据就是最小或最大了步骤二.再次选取第二个位置上的数据,和其后各个位置上的数据进行比较.如此重复,就可将数据进行排序了. 实例: package algorithm.sort; /**  * 演示选择排序算法  * @author 学霸联盟 - 赵灿  */ public class 

算法基础——1.排序

排序算法 交换排序类:冒泡排序.快速排序 选择排序类:简单选择排序.堆排序 插入排序类:直接插入排序.希尔排序 冒泡排序 冒泡排序(Bubble Sort),排序的基本思想为两两比较小相邻数据的关键字,如果顺序为反则进行交换,直到没有反序的记录为止. 冒泡排序有多种变化,其三种不同实现的代码如下: //OS:Win | Terminal:Cmder | Editor:Atom | Language:c void Swap(int *a , int *b){ int temp = *a; *a =

算法基础--快排序,堆排序,归并排序

这是笔记; 快速排序的思想:先说一趟划分:一个数组a[0...(length-1)],把数组的第一个元素当作枢轴v(是vlaue,不是下标),将数组中所有比k小的元素都移动到k的左侧,将所有比v大的元素都移动到元素的右边. 我们需要得到一个数组划分后,枢轴v现在的位置下标(这是下一步进行划分的边界); 长度为n的数组,平均需要log(n)次划分. 代码实现: 1 ///quick sort 2 void quick_sort(int a[],int s,int t){//这是算法的开始,我们看到

Java基础——选择排序、冒泡排序

1.选择排序 原理是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来, 顺序放入新数组,直到全部拿完 代码演示: 1 public class Test3 { 2 public static void main(String[] args) { 3 int[] arr = { 3, 9, 81, 8, 5, 10 }; 4 selectSort(arr); 5 print(arr); 6 } 7 8 /* 选择排序:原理是第i个元素和剩余元素的比较次数 */ 9 publ

数据结构算法基础-内部排序算法

1 arr = [1,23,12,9,8,8,9,1,1,8,] 2 def quickSortCore(arr,start,end): 3 if start < end: 4 index = partition(arr,start,end) 5 quickSortCore(arr,start,index-1) 6 quickSortCore(arr,index+1,end) 7 8 def partition(arr,start,end): 9 key = arr[start] 10 whil