NYOJ 233 Sort it【冒泡排序】

求解交换次数,用冒泡刚好

Sort it

时间限制:1000 ms  |  内存限制:65535 KB

难度:2

描述
You want to processe a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. Then how many times it need.

For example, 1 2 3 5 4, we only need one operation : swap 5 and 4.

输入
The input consists of a number of test cases. Each case consists of two lines: the first line contains a positive integer n (n <= 1000); the next line contains a permutation of the n integers from 1 to n.
输出
For each case, output the minimum times need to sort it in ascending order on a single line.
样例输入
3
1 2 3
4
4 3 2 1 
样例输出
0
6
来源
ZJFC 2009-3 Programming Contest
上传者
张洁烽

#include<stdio.h>
#include<string.h>
int arr[1100];
int main()
{
	int n,i,j,sum,t;
	while(~scanf("%d",&n))
	{
		sum=0;
		memset(arr,0,sizeof(arr));
		for(i=0;i<n;i++)
			scanf("%d",&arr[i]);
		for(i=1;i<=n-1;i++)
			for(j=0;j<=n-i-1;j++)
				if(arr[j]>arr[j+1])
				{
					t=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=t;
					sum++;
				}
		printf("%d\n",sum);
	}

	return 0;
}
时间: 2024-10-24 09:18:52

NYOJ 233 Sort it【冒泡排序】的相关文章

HDU 5775 Bubble Sort(冒泡排序)

HDU 5775 Bubble Sort(冒泡排序) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)   Problem Description - 题目描述 P is a permutation of the integers from 1 to N(index starting from 1).Here is the code of Bubble Sort in C++.

NYOJ 233 &amp;&amp;NYOJ 322 Sort(树状数组)

链接:click here 题意: 描述 You want to processe a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. Then how many times it need. For example, 1 2 3 5 4, we only need one operation :

js中sort()方法冒泡排序模拟

1.sort()方法概述 sort() 方法用于对数组的元素进行排序. 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序.要实现这一点, 首先应把数组的元素都转换成字符串(如有必要),以便进行比较. 如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字. 比较函数应该具有两个参数 a 和 b,其返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一

nyoj 322 Sort 【树状数组】

这道题其实就是考试树状数组. 代码: #include <cstdio> #include <cstring> int c[1005]; int lowbit(int x){ return x&(-x); } int getsum(int x){ int sum = 0; while(x){ sum += c[x]; x -= lowbit(x); } return sum; } void add(int x, int val){ while(x <= 1004){

冒泡排序、选择排序、插入排序、快速排序

冒泡排序(Bubble Sort) 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次笔记两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行知道没有在需要的交换,也就是说该数列已经排序完成. 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名. data_set = [ 9,1,22,31,45,3,6,2,11 ] loop_count = 0 for j in range(len(data

STL sort

STL的sort()算法,数据量大时采用Quick Sort,分段递归排序,一旦分段后的数据量小于某个门槛,为避免Quick Sort的递归调用带来过大的额外负荷,就改用Insertion Sort.如果递归层次过深,还会改用Heap Sort.本文先分别介绍这个三个Sort,再整合分析STL sort算法(以上三种算法的综合) -- Introspective Sorting(内省式排序). 一.Insertion Sort Insertion Sort是<算法导论>一开始就讨论的算法.它的

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

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

排序高级之交换排序_冒泡排序

冒泡排序(Bubble Sort,台湾另外一种译名为:泡沫排序)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 冒泡排序对个项目需要O()的比较次数,且可以原地排序.尽管这个算法是最简单了解和实现的排序算法之一,但它对于少数元素之外的数列排序是很没有效率的. 冒泡排序是与插入排序拥有相等的

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

package com.rao.sort; import java.util.Arrays; /** * @author Srao * @className BubbleSort * @date 2019/12/4 12:33 * @package com.rao.sort * @Description 冒泡排序 */public class BubbleSort { /** * 冒泡排序 * @param arr */ public static void bubbleSort(int[] a