1. 程式人生 > >SDUT-2554 氣泡排序中資料交換的次數

SDUT-2554 氣泡排序中資料交換的次數


Code

#include <stdio.h>

int main()
{
    int t,n,i,j,temp,a[100];
    scanf("%d",&t);
    while(t--)
    {
        int count = 0;
        scanf("%d",&n);
        for(i=0; i<n; i++)
            scanf("%d",&a[i]);
        for(i=0; i<n-1; i++)
        {
            for(j=0; j<n-1-i; j++)
            {
                if(a[j]>a[j+1])
                {
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                    count++;
                }
            }
        }
        printf("%d\n",count);
    }
    return 0;
}
反思:陣列練習,在氣泡排序里加一行統計排序次數的cnt即可。

相關推薦

SDUT-2554 氣泡排序資料交換次數

Code #include <stdio.h> int main() { int t,n,i,j,temp,a[100]; scanf("%d",&t);

C語言訓練-2554-氣泡排序資料交換次數

Problem Description 聽說過氣泡排序麼?一種很暴力的排序方法。今天我們不希望你用它來排序,而是希望你能算出從小到大氣泡排序的過程中一共進行了多少次資料交換。 Input 輸入資料的第一行為一個正整數 T ,表示有 T 組測試資料。 接下來T行,

氣泡排序資料交換次數

import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner input = new Scanner(System.in); int

氣泡排序交換次數與比較次數

氣泡排序的過程中每次交換就是消除一個逆序對,而比較次數由其外層迴圈確定,因為內層是肯定迴圈至結束的。 用了歸併排序求逆序對,樹狀陣列求一個數的最大逆序對數。內部迴圈的次數為n-1,n-2.....n-

UVA 299- Train Swapping(氣泡排序交換次數)

At an old railway station, you may still encounter one of the last remaining ``train swappers''. A train swapper is an employee of the railroad, whose

HackerRank- Minimum Swap 2 陣列排序最小交換次數

原題: 問題的關鍵是找到閉環。假設每個閉環有k個數字,則閉環內交換次數為k-1。最小交換次數為所有閉環內的交換次數相加。 閉環的含義是,從某個數字A1開始,若A1處於錯誤的index,則找到A2處於A1排序後的位置,找到A3處於A2排序後的位置......最後發現

多條資料按照某條資料某個共有屬性排序氣泡排序

多條資料按照某條資料中某個共有屬性排序(氣泡排序) 注意:此例是根據學生成績由高到低排序,僅供自己專案中提供思路,勿擾。 1、新建一個專案,在專案中新增一個Students類,用於儲存學生的基本資訊。 Students 類: class Students {

資料結構之排序篇——氣泡排序 //逆序則交換

typedef int DataType; void bubble(DataType* a, int n) {     for (int i = 0; i < n - 1; i++) {       

資料結構——交換排序氣泡排序,快速排序

一.氣泡排序 1.原理:比較兩個相鄰的元素,將值大的元素交換至右端。 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前

資料結構實驗之排序二:交換排序 (SDUT 3399)

#include <iostream> #include <bits/stdc++.h> using namespace std; typedef long long ll; //int sum = 0; int a[100004]; //題目是長整型,不過這裡 i

#資料結構與演算法學習筆記#劍指Offer35:數字在排序陣列出現的次數 + 測試用例(Java、C/C++)

2018.10.24 今天是程式設計師節,但是程式設計師有啥節好過的,還是好好幹活吧~ 這道題也是一道效率題,根據實際情況的不同有兩個比較好用的方法: 方法一:平均複雜度o(n)。二分找到某一個K

氣泡排序和快排的交換次數

#include<stdio.h> long long int num1, num2; int a[100], b[100]; void kuaipai(int left, int right) { int data; long long int l, r; l = lef

求逆序對數(氣泡排序交換次數

求 a1,a2,..,an 的逆序對數一、直接求直接兩個for迴圈跑  時間複雜度 O(n^2) for(int i=1;i<=n;i++){ for(int j=1;j<i;j++){ if(a[i]>a[j]) cnt++;

讀取一個檔案然後將檔案資料排序然後輸出到另外一個檔案氣泡排序

#include <iostream> #include <fstream> #include <vector> using namespace std ; void Order(vector<int>& data)

資料結構:交換排序氣泡排序、快速排序

1.氣泡排序,它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。 氣泡排序演算法的原理如下: 比較相鄰的元素。如果第一

運用BIT處理氣泡排序交換次數問題

題意:給定一個1~n的排列a0,a1,a2,.....,a(n-1),求對這個數列進行氣泡排序所需要的交換次數。 在資料較大時,用常規的雙重for迴圈來求解交換次數就會因為複雜度太高而存在TLE的情況,所以可以利用樹狀陣列善於查詢兩個數之間的數字和的優勢進行解題。 首相樹

劍指offer之統計一個數字在排序陣列出現的次數

1.題目描述 統計一個數字在排序陣列中出現的次數。 2.問題分析 方法一: 因為是排序的陣列,首先在陣列中找到第一個值為k的位置begin,之後從begin找下一個不等於值k的位置end,則,次數為end - begin。 例如:1 2 2 3 3 3 5,k = 3

牛客網——數字在排序陣列出現的次數

題目描述 統計一個數字在排序陣列中出現的次數。 package 劍指offer; /** * Created by Administrator on 2018/10/28. */ public class 數字在排序陣列中出現的次數 { public stat

劍指offer -- 數字在排序陣列出現的次數

題目描述 統計一個數字在排序陣列中出現的次數。 解題思路 因為題目給出的陣列是排序了的,所以我們想到了二分查詢。利用二分查詢找到一個數字在陣列中第一次出現的位置和最後出現的位置即可。 AC程式碼 public class Solution { public int

資料結構(連結串列系列):連結串列建立,連結串列刪除特定節點,連結串列氣泡排序,連結串列快速排序

一、連結串列的理解: 1,各個節點間地址存放可以不連續,雖說是表,但是指標存在是為了找到其他的節點,如果連續了,都沒必要用連結串列了。 2,各節點依賴上一節點,要找到某一個節點必須找到他的上一個節點,所以要訪問連結串列,必須要知道頭指標,然後從頭指標訪問開始。 3,各節點間原來是獨立的,本