冒泡排序之小数上浮法

 1 #include <stdio.h>
 2 #define N 10
 3
 4 void initial(int *a)
 5 {
 6     int i;
 7     for (i = 0; i < N; i++)
 8     {
 9         scanf("%d", a + i);
10     }
11 }
12
13 void print(int *a)
14 {
15     int i;
16     for (i = 0; i < N; i++)
17     {
18         printf("%d ", *a++);
19     }
20 }
21
22 void selectSort(int *a)
23 {
24     int i, j, k;
25     for (i = 0; i < N - 1; i++)
26     {
27         for (j = N - 2; j >= i; j--)
28         {
29             if (a[j] > a[j + 1])
30             {
31                 a[j] = a[j] ^ a[j + 1], a[j + 1] = a[j] ^ a[j + 1], a[j] = a[j] ^ a[j + 1];
32                 print(a);
33                 printf("\n");
34             }
35         }
36     }
37 }
38
39 int main(void)
40 {
41     int a[N];
42     initial(a);
43     selectSort(a);
44     print(a);
45 }
时间: 2024-10-11 16:43:13

冒泡排序之小数上浮法的相关文章

上浮法或漂浮法

题意:给一张白纸,按顺序往上面贴有颜色且不透明的矩形,求最后能看到的颜色以及每种颜色的面积. 思路:对每个矩形而言,它最后能有多少被看见,取决于它后面的矩形.所以从后往前处理,就像一个矩形从最底下上浮,碰到它上面的矩形就分成若干块,到水面上时更新答案.递归表示剩余的可见矩形,然后模拟上浮过程. 1 struct Node { 2 int x1, y1, x2, y2, color; 3 void inp() { 4 scanf("%d%d%d%d%d", &x1, &y

常用排序算法实现[交换排序之冒泡排序、快速排序]

相关知识 1. 稳定排序和非稳定排序: 稳定排序算法会依照相等的关键(换言之就是值)维持纪录的相对次序. 如果排序算法是稳定的,就是当有两个有相等关键的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前. 2. 内排序和外排序 在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序: 在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的存放顺序排序方法称为外排序. 3.算法分类 排序算法从理论上分为如下几类: (1) 交换排序法:

今天练习了一下用python写函数,就把它记录到博客上吧 冒泡排序和素数判断

第一个是判断素数,先上代码吧: 1 from math import sqrt 2 def is_prime(i): 3 if i == 2: 4 return True 5 elif i<2: 6 return False 7 elif i%2 == 0: 8 return False 9 else: 10 for n in range(3,int(sqrt(i)+1),2): 11 if i%n == 0: 12 return False 13 return True 这里用到了math包的

排序之快速排序(上)

前言 本篇博客是在伍迷兄的博客基础上进行的,其博客地址. 希尔排序相当于直接插入排序的优化,它们同属于插入排序类,堆排序相当于简单选择排序的优化,它们同属于选择排序类.而快速排序其实就是冒泡排序的升级,它们都属于交换排序类.即它也是通过不断的比较和移动交换来实现排序的,只不过它的实现,增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的记录从后面直接移动到前面,从而减少了总的比较次数和移动交换次数,而不是像冒泡排序那样左右两两进行比较和交换. 说白了,其实就是在冒泡

FZU 2032 高精度小数加法

题目描写很没意思..就是说给出n个小数 求它们的总和 因为给出的小数点后最多16位而要求保存至12位 而能直接使用的最精确的double只能到12位 于是13的进位可能被忽略 于是不可以用double 于是它就是一个很裸的小数高精度加法..还只是加法.. 在比赛的时候学长很快就敲出来了代码并且AC 但是被别人极多提交的极短且超时代码唬住(猜测应该是直接相加) 以为直接相加的O(N)的复杂度尚且不可..所以甚至连试做都没有 赛后写出代码F9直接运行 但是小数上的进位转到整数上遗漏 更改后AC #i

算法入门———冒泡排序

冒泡排序从名字上就可以看出它的特点就像水里的气泡一样每一个气泡一步一步网上冒 一图胜前言 冒泡的基本思想就是讲两两相邻的数字进行大小比较,大的数字放在后面. 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. package bubblesort; /** * 冒泡排序 * 基

冒泡排序算法(Java)

 冒泡排序即每次遍历.相邻数字间进行比較,前者大于后者进行交换,不断将最大值后移,直至沉至最后位置:算法关键要点在于确定每次循环的边界. 后面两种算法则是对冒泡排序一定程度上的改良,但相对于其它排序算法,冒泡排序性能依旧较差. //冒泡排序 public class Bubble_Sort { //最原始的解法 public void bubble_sort1(int[] data) { int n = data.length; for(int i = 0; i < n; i++) { //

排序算法系列:冒泡排序与双向冒泡排序

概述 排序算法应该算是一个比较热门的话题,在各个技术博客平台上也都有一些博文进行了一定程度的讲解.但还是希望能从自我完善的角度出发,可以更详细.全面.形象地表达这些算法的精髓.本文就先从最简单的冒泡排序开始说起,别说你已经彻底了解了冒泡排序算法(虽然一开始我也是这样以为的). 版权说明 本文链接:http://blog.csdn.net/lemon_tree12138/article/details/50474230 – Coding-Naga - 转载请注明出处 目录 概述 版权说明 目录 冒

排序算法之冒泡排序(Java)

 冒泡排序即每次遍历.相邻数字间进行比较,前者大于后者进行交换,不断将最大值后移,直至沉至最后位置:算法关键要点在于确定每次循环的边界: 后面两种算法则是对冒泡排序一定程度上的改良,但相对于其他排序算法,冒泡排序性能依然较差. //冒泡排序 public class Bubble_Sort { //最原始的解法 public void bubble_sort1(int[] data) { int n = data.length; for(int i = 0; i < n; i++) { //