1. 程式人生 > >陣列操作小練習----奇前偶後and楊氏矩陣查數

陣列操作小練習----奇前偶後and楊氏矩陣查數

調整陣列使奇數全部都位於偶數前面。
題目:
輸入一個整數陣列,實現一個函式,來調整該陣列中數字的順序使得陣列中所有的奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。

思路分析:
這裡涉及到一個數組的各個數值的奇偶性,肯定要逐個判斷。

這裡我們給出的的方法是定義一前一後兩個下標,前下標遇到偶數停下,後下標遇到奇數停下,然後交換兩個數。++前下標,–後下標。直至前下標>=後下標停止。

#include<stdio.h>
#include<Windows.h>

void adjust(int* arr,int len)
{
	int front = 0, back =
len - 1; while (front < back) { if (arr[front] % 2 == 0 && arr[back] % 2 == 1) { int tmp = arr[front]; arr[front] = arr[back]; arr[back] = tmp; front++, back--; } if (arr[front] % 2 == 1) front++; if (arr[back] % 2 == 0) back--; } } int main() { int arr[10] =
{ 21, 32, 56, 48, 55, 97, 64, 22, 58, 65 }; int len = sizeof(arr) / sizeof(int); adjust(arr,len); for (int i = 0; i < len; ++i) printf("%d ", arr[i]); system("pause"); return 0; }

這裡寫圖片描述

//楊氏矩陣
有一個二維陣列.
陣列的每行從左到右是遞增的,每列從上到下是遞增的.
在這樣的陣列中查詢一個數字是否存在。
時間複雜度小於O(N);
陣列:
1 2 3
2 3 4
3 4 5

1 3 4
2 4 5
4 5 6

思路分析:

這裡涉及到時間複雜度不能超過O(N):就是說這個二維陣列不能全部走一遍。不能一一比較。

這不是一般的二維陣列,左右遞增,上下遞增。

對比一位數組裡邊的有序陣列,這裡是二維陣列中的一維有序。

陣列第一行最右邊的數比這一行的每一個數都大,比這一列的每一個數都小。

最後一行最右邊的數類同。


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<Windows.h>
int search_num(int arr[3][3], int key,int row,int col)
{
	int i = 0;
	int j = col - 1;
	while ((i < row) && (j >= 0))
	{
		if (key>arr[i][j])
			i++;
		else if (key < arr[i][j])
			j--;
		else
			return 1;
	}
	return 0;
}
int main()
{
	int ret = 0;
	int arr[3][3] = { { 1, 2, 3 }, { 2, 3, 4 }, { 3, 4, 5 } };
	int key = 4;
	ret=search_num(arr,key,3,3);
	if (ret == 1)
		printf("找到了\n");
	else
		printf("沒找到\n");
	system("pause");
	return 0;
}

這裡寫圖片描述

相關推薦

陣列操作練習----and矩陣

調整陣列使奇數全部都位於偶數前面。 題目: 輸入一個整數陣列,實現一個函式,來調整該陣列中數字的順序使得陣列中所有的奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。 思路分析: 這裡涉及到一個數組的各個數值的奇偶性,肯定要逐個判斷。 這裡我們給出的的方法是定

初夏談:排隊,矩陣(查詢數字)大O階小於(N)

1.調整陣列使奇數全部都位於偶數前面。 #include<Aventador_SQ.h> #define ROW 100 void JiOuSort(int arr[ROW],int count) { int count1 = 0; int i = 0,j=0; int tem

兩個有序陣列,從中各取一個組成pair,求和最K個pair(矩陣top k問題)

 不需要把所有的pair放進優先佇列,每次只放當前數的下邊和右邊的數,其他更遠的數,肯定比這兩個數更大, vector<pair<int, int>> topKPair(vector<int> &A, vector<int

1.調整陣列使奇數全部都位於偶數前面2. 矩陣

1.調整陣列使奇數全部都位於偶數前面。 題目: 輸入一個整數陣列,實現一個函式,來調整該陣列中數字的順序使得陣列中所有的奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。 #include <stdio.h> void sort(int* a,

調整陣列使奇數全部都位於偶數前面,以及矩陣的實現

輸入一個整數陣列,實現一個函式, 來調整該陣列中數字的順序使得陣列中所有的奇數位於陣列的前半部分, 所有偶數位於陣列的後半部分。 #include<stdio.h> #include<windows.h> #include<stdl

python中round函式的一個坑——

>>> round(10.5) # 按照round的四捨五入,本來應該是11的。但是這裡是10 10 >>> round(11.5) # 整數部分為奇數的時候,又

//矩陣 有一個二維陣列. 陣列的每行從左到右是遞增的,每列從上到下是遞增的. 在這樣的陣列中查詢一個數字是否存在。

//楊氏矩陣 有一個二維陣列. 陣列的每行從左到右是遞增的,每列從上到下是遞增的. 在這樣的陣列中查詢一個數字是否存在。 時間複雜度小於O(N); 我用一個while迴圈實現了該要求 #include <stdio.h> #include <windows.h>

如何使陣列中的奇數全部都位於偶數前面以及在矩陣中尋找一個數

1.調整陣列使奇數全部都位於偶數前面。  #include<stdio.h> #define ROW 100 void JiOuSort(int arr[ROW],int count) {     int count1 = 0;  &

//矩陣 有一個二維陣列. 陣列的每行從左到右是遞增的,每列從上到下是遞增的. 在這樣的陣列中查詢一個數字是否存在

題目: //楊氏矩陣  有一個二維陣列.  陣列的每行從左到右是遞增的,每列從上到下是遞增的.  在這樣的陣列中查詢一個數字是否存在。  時間複雜度小於O(N);  陣列:  1 2 3  2 3 4

查詢----二維陣列的查詢之矩陣

演算法研討的論文【原創分享】 楊氏矩陣 Young Tableau 前幾天演算法課上老師提到了一個數據結構--Young Tableau,只是簡單的提了一下,沒有仔細的講解,於是自己在網上搜集了一些資料,並且加以研究,感覺楊氏矩陣(Young Tableau)是一個很奇妙

Python文件操作自制練習

sarah 目標 port body pen out button one version for b in range(29): a = open(‘D:\\a\\‘ + str(b+1) + ‘.srt‘,‘r‘) #讀取文件 lines =

ArcGIS操作技巧(一)之屬性表中顯示出小數點面的 0

當你開啟ArcGIS屬性表,對向量進行面積或其他計算時,發現如下圖所示問題,兄弟莫方...........,接下來用兩種方法保證你滿意。      主要方法: 一、設定系統時間。 二、欄位屬性設定。 具體操作: 一、(1) 點選系統時間設定(環境

Java基礎 String 裸暴力演算法- 五個練習 Java陣列直接選擇排序、sort()排序

  之間的部落格,承上啟下:    Java基礎 String/StringBuff 常用操作方法複習/記憶體分析 Java陣列直接選擇排序、sort()排序 Java基礎 String 演算法 - 五個練習題目要求: /** 1.模擬一個trim方法,去除

No.18 程式碼練習:列印乘法口訣,交換變數值,判斷閏年,陣列操作

學習不易,需要堅持。 1.實現一個函式,列印乘法口訣表,口訣表的行數和列數自己指定, 輸入5,輸出55口訣表,輸入,輸出99的乘法口訣表。 2.使用函式實現兩個數的交換。 3.實現一個函式判斷year是不是潤年。 4.建立一個數組,實現函式init()初始化陣列、實現empt

陣列的常用方法(4)--es3.0:燒腦練習

練習23:給一個有序的陣列亂序,而且每次的順序還不一樣。 用sort()排序,亂序也得用sort(); Math.random()返回的是0-1之間的開區間的數。 那要產生負數,怎麼辦? 減一,減一不就減沒了嗎?減0.5是不是就完事了!  

Java陣列練習

陣列在每個程式語言中都有著很重要的地位,以下是陣列在Java語言中的一些簡單練習題: 1.計算陣列中最大值 2.計算陣列中最小值 3.計算陣列值之和 4.陣列拼接 5.陣列擷取 6.陣列列印 7.反轉陣列 程式碼展示: public class ArrayUtils{ //1.

隱馬爾科夫模型(向演算法、鮑姆-韋爾演算法、維特比演算法)

 概率圖模型是一類用圖來表達變數相關關係的概率模型。它以圖為表示工具,最常見的是用一個結點表示一個或一組隨機變數,結點之間的變表是變數間的概率相關關係。根據邊的性質不同,可以將概率圖模型分為兩類:一類是使用有向無環圖表示變數間的依賴關係,稱為有向圖模型或貝葉斯網;另一類是使用無向圖表示變數間的相關關係,稱為無

【演算法】--- 先減陣列找最大,先增陣列找最,先增增找最

 先減後增陣列找最大 public int turningPoint(int[] A) {           int m

【c語言】指標與陣列練習

一維陣列 int a[]={1,2,3,4}; 1.printf(“%d\n”,sizeof(a)); //16 sizeof(陣列名)求的是整個陣列的大小 2.printf(“%d\n”,sizeof(a+0)); //4 表示第一個元素地址的大小(