> For the complete documentation index, see [llms.txt](https://ke-ren.gitbook.io/leetcode-practice/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ke-ren.gitbook.io/leetcode-practice/array/003-squares-of-a-sorted-array.md).

# 003  Squares of a Sorted Array

## Given an integer array `nums` sorted in **non-decreasing** order, return *an array of **the squares of each number** sorted in non-decreasing order*.

### **Example 1:**

```
Input: nums = [-4,-1,0,3,10]
Output: [0,1,9,16,100]
Explanation: After squaring, the array becomes [16,1,0,9,100].
After sorting, it becomes [0,1,9,16,100].
```

### **Example 2:**

```
Input: nums = [-7,-3,2,3,11]
Output: [4,9,9,49,121]
```

### **Constraints:**

* `1 <= nums.length <= 104`
* `-104 <= nums[i] <= 104`
* `nums` is sorted in **non-decreasing** order.

&#x20;**Follow up:** Squaring each element and sorting the new array is very trivial, could you find an `O(n)` solution using a different approach?

## Solution

### Code

{% tabs %}
{% tab title="C#" %}

```csharp
public class Solution {
	public int[] SortedSquares(int[] nums) {
		int[] squareNums = nums;
		int length= nums.Length;
        int temp;
		
		//Do square
		for(int i=0; i<length; i++){
			squareNums[i]=squareNums[i]*squareNums[i];
		}
        
        //Do sort in non-decreasing order ---- bubbleSort
        for(int j=0; j<length-1; j++){
            for(int k=0; k<length-1-j; k++){
                if(squareNums[k]>squareNums[k+1]){
                    temp = squareNums[k];
                    squareNums[k] = squareNums[k+1];
                    squareNums[k+1] =temp;
                }
            }
        }      
    return squareNums;
	}
}
```

{% endtab %}
{% endtabs %}

### Reference

#### 1、冒泡排序（Bubble Sort）

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列，一次比较两个元素，如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换，也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。&#x20;

**1.1 算法描述**

* 比较相邻的元素。如果第一个比第二个大，就交换它们两个；
* 对每一对相邻元素作同样的工作，从开始第一对到结尾的最后一对，这样在最后的元素应该会是最大的数；
* 针对所有的元素重复以上的步骤，除了最后一个；
* 重复步骤1\~3，直到排序完成。

**1.2 代码实现**

```
function bubbleSort(arr) {
    var len = arr.length;
    for(var i = 0; i < len - 1; i++) {
        for(var j = 0; j < len - 1 - i; j++) {
            if(arr[j] > arr[j+1]) {        // Compare adjacent elements in pairs
                var temp = arr[j+1];        // Change elements
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}
```

**1.2 代码优化**

```
public static void sort(int arr[]){
    for( int i = 0;i < arr.length - 1 ; i++ ){
        boolean isSort = true;
        for( int j = 0;j < arr.length - 1 - i ; j++ ){
            int temp = 0;
            if(arr[j] < arr[j + 1]){
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                isSort = false;
            }
        }
        if(isSort){
            break;
        }
    }
}
```

### More:

{% embed url="<https://www.cnblogs.com/onepixel/articles/7674659.html>" %}

{% embed url="<https://juejin.cn/post/6844903863288332302>" %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ke-ren.gitbook.io/leetcode-practice/array/003-squares-of-a-sorted-array.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
