473,761 Members | 4,511 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Inserting an item into a sorted list

I totally bombed this question in an interview so I'm posting my answer here
for comments and suggestions... perhaps (god help me) I'm just not that
bright, but this works and seems to be fairly efficent. The idea was simple,
insert an integer into a list that has already been sorted.

private int[] _list;
....
public void Insert(int value)
{
int[] tempArray;

// check for special cases
if (this._list == null)
{ // first item added create new array

this._list = new int[1];
this._list[0] = value;
return;
}
else if (this._list[this._list.Leng th-1] <= value)
{ // item to be added is greater than the last
// item in the array, append item to end

tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, tempArray, this._list.Leng th);
this._list = tempArray;
this._list[this._list.Leng th-1] = value;

return;
}
else if (this._list[0] >= value)
{ // item to be added is less than the first
// item in the array, insert item to the beginning

tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, 0, tempArray, 1, this._list.Leng th);
this._list = tempArray;
this._list[0] = value;

return;
}

int left = 0;
int right = this._list.Leng th;
int middle = 0;
int mod = 0;

// binary search loop
while (left <= right)
{
// modify the pivot point
middle = (left + right) / 2;

if (value > this._list[middle])
{ // item is greater than the pivot point

//Debug.WriteLine (value + " > " + this._list[middle]);
mod = 1;
left = middle + 1;
}
else if (value < this._list[middle])
{ // item is less than the pivot point

//Debug.WriteLine (value + " < " + this._list[middle]);

mod = 0;
right = middle - 1;
}
else
{ // item is equal to the pivot point

//Debug.WriteLine (value + " = " + this._list[middle]);
break;
}
}

// modify the pivot point again
middle += mod;

// rebuild array to allow space for new item
tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, 0, tempArray, 0, middle);
Array.Copy(this ._list, middle, tempArray, middle+1, tempArray.Lengt h -
(middle +1));

// insert new item
this._list = tempArray;
this._list[middle] = value;
}

Nov 17 '05 #1
10 11622
I have not read the code too closely, but here is what I see that could
improve performance slightly (depending on how the Array.Copy is
implemented).

Toward the end, you have two copy statements which copy each half of the
array leaving a gap for the new number.

One suggestion (and forgive me if I am too obsessive compulsive) is that
rather then two, it might be more efficient to make just one call to
Array.Copy to an array that is one bigger. Doing this will leave the last
element undefined. Then insert your value as the last element, then swap
the last element with the pivot value. If Array.Copy was efficient, it
would do a memory copy rather then enumerating the values (like I said, I
don't really know the implementation) .

Don't know if it would do anything but just a thought.
"Ryan Graham" <ry****@earthli nk.net> wrote in message
news:kc******** *********@newsr ead3.news.pas.e arthlink.net...
I totally bombed this question in an interview so I'm posting my answer
here
for comments and suggestions... perhaps (god help me) I'm just not that
bright, but this works and seems to be fairly efficent. The idea was
simple,
insert an integer into a list that has already been sorted.

private int[] _list;
...
public void Insert(int value)
{
int[] tempArray;

// check for special cases
if (this._list == null)
{ // first item added create new array

this._list = new int[1];
this._list[0] = value;
return;
}
else if (this._list[this._list.Leng th-1] <= value)
{ // item to be added is greater than the last
// item in the array, append item to end

tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, tempArray, this._list.Leng th);
this._list = tempArray;
this._list[this._list.Leng th-1] = value;

return;
}
else if (this._list[0] >= value)
{ // item to be added is less than the first
// item in the array, insert item to the beginning

tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, 0, tempArray, 1, this._list.Leng th);
this._list = tempArray;
this._list[0] = value;

return;
}

int left = 0;
int right = this._list.Leng th;
int middle = 0;
int mod = 0;

// binary search loop
while (left <= right)
{
// modify the pivot point
middle = (left + right) / 2;

if (value > this._list[middle])
{ // item is greater than the pivot point

//Debug.WriteLine (value + " > " + this._list[middle]);
mod = 1;
left = middle + 1;
}
else if (value < this._list[middle])
{ // item is less than the pivot point

//Debug.WriteLine (value + " < " + this._list[middle]);

mod = 0;
right = middle - 1;
}
else
{ // item is equal to the pivot point

//Debug.WriteLine (value + " = " + this._list[middle]);
break;
}
}

// modify the pivot point again
middle += mod;

// rebuild array to allow space for new item
tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, 0, tempArray, 0, middle);
Array.Copy(this ._list, middle, tempArray, middle+1, tempArray.Lengt h -
(middle +1));

// insert new item
this._list = tempArray;
this._list[middle] = value;
}

Nov 17 '05 #2
Here is a quite simple version. And a few comments:

* Array class contains a static binary search method.
* No need to special case first, last item. Just Array.Copy zero items
* Unless null array is needed for some reason it is easier to just
make the private array zero length at initalization. That way there is
no need to employ null checks in all methods manipulating it.

private int[] array = new int[0];

public void Insert(int value)
{
int[] newArray = new int[array.Length+1];

//Array is sorted so we can use binary search to find insert spot
int spot = Array.BinarySea rch(array, value);
//If value is not found, spot is set to the negative of the next
//higher value's index.
if (spot < 0)
spot = -spot - 1; //Set insert spot to index before larger item.

Array.Copy(arra y, newArray, spot);
newArray[spot] = value;
Array.Copy(arra y, spot,newArray, spot+1,array.Le ngth - spot);
array = newArray;
}

--
Marcus Andrén
Nov 17 '05 #3
I appreciate the input, just to clarify the intent was to practice my own
binary search algorithm.

"Marcus Andrén" <a@b.c> wrote in message
news:3k******** *************** *********@4ax.c om...
Here is a quite simple version. And a few comments:

* Array class contains a static binary search method.
* No need to special case first, last item. Just Array.Copy zero items
* Unless null array is needed for some reason it is easier to just
make the private array zero length at initalization. That way there is
no need to employ null checks in all methods manipulating it.

private int[] array = new int[0];

public void Insert(int value)
{
int[] newArray = new int[array.Length+1];

//Array is sorted so we can use binary search to find insert spot
int spot = Array.BinarySea rch(array, value);
//If value is not found, spot is set to the negative of the next
//higher value's index.
if (spot < 0)
spot = -spot - 1; //Set insert spot to index before larger item.

Array.Copy(arra y, newArray, spot);
newArray[spot] = value;
Array.Copy(arra y, spot,newArray, spot+1,array.Le ngth - spot);
array = newArray;
}

--
Marcus Andrén

Nov 17 '05 #4


Ryan Graham wrote:
I totally bombed this question in an interview so I'm posting my answer here
for comments and suggestions... perhaps (god help me) I'm just not that
bright, but this works and seems to be fairly efficent. The idea was simple,
insert an integer into a list that has already been sorted.


I think the best answer to the question is, "If this is an often-done
operation, you are using arrays for something you should use a sorted
tree's for".

--
Helge Jensen
mailto:he****** ****@slog.dk
sip:he********* *@slog.dk
-=> Sebastian cover-music: http://ungdomshus.nu <=-
Nov 17 '05 #5
In article <kc************ *****@newsread3 .news.pas.earth link.net>,
Ryan Graham <ry****@earthli nk.net> wrote:

: I totally bombed this question in an interview so I'm posting my
: answer here for comments and suggestions... perhaps (god help me) I'm
: just not that bright, but this works and seems to be fairly efficent.
: The idea was simple, insert an integer into a list that has already
: been sorted.

Did the question require logarithmic complexity? In pressure
situations, avoid cleverness! Assuming there was no complexity
requirement, you might have said something like, "Well, I'll start
with a linear search and then optimize later using binary search."

You may have even said, "Well, I'll start with the dead-simple approach
of copying to a one-longer array, adding the value to be inserted, and
the sorting the result." Then you could talk about the piggish
complexity, which you could improve by going to linear or binary
search, and also the inefficient allocation strategy, which you could
mitigate by doubling the capacity -- distinct from the length -- when
you run out of room.

Showing that you are aware of clever solutions but move first to a
correct result and then refine for performance sends a very good signal
in a job interview.

Below is an implementation, complete with unit tests.

Enjoy,
Greg

// SortedList.cs
using System;
using System.Collecti ons;

namespace MyCollections
{
public class SortedIntList
{
private int[] a = new int[0];

public void Insert(int value)
{
int i = InsertionPointL ogarithmic(valu e);

int[] anext = new int[a.Length + 1];

Array.Copy(a, 0, anext, 0, i);
anext[i] = value;
Array.Copy(a, i, anext, i + 1, a.Length - i);

a = anext;
}

private int InsertionPointL ogarithmic(int value)
{
int l = 0;
int r = a.Length - 1;

while (l <= r)
{
int m = (l + r) / 2;

if (value < a[m])
r = m - 1;
else
l = m + 1;
}

return l;
}

private int InsertionPointL inear(int value)
{
int i;
for (i = 0; i < a.Length; i++)
if (a[i] > value)
break;

return i;
}

public int this[int i]
{
get { return a[i]; }
}

public int Count
{
get { return a.Length; }
}
}
}

// InsertTest.cs
using System;

using MyCollections;

using NUnit.Framework ;

namespace SortedListTests
{
[TestFixture]
public class InsertTest
{
SortedIntList list = new SortedIntList() ;

[SetUp]
public void CreateList()
{
list = new SortedIntList() ;
}

[Test]
public void StartEmpty()
{
AssertCountEqua ls(0);
}

[Test]
public void IntoEmptyList()
{
list.Insert(3);

AssertCountEqua ls(1);
Assert.AreEqual (3, list[0], "bogus value");
}

[Test]
public void InsertIncreasin g()
{
int[] seq = new int[] { 1, 2 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}

[Test]
public void InsertDecreasin g()
{
int[] seq = new int[] { 20, 10 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}

[Test]
public void InsertManyAssor ted()
{
int[] seq = new int[] { 70, 10, 30, 40, 20, 50 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}

[Test]
public void InsertWithDupli cates()
{
int[] seq = new int[] { 30, 20, 10, 10, 50, 10, 50, 20 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}

private void InsertSequence( int[] values)
{
foreach (int value in values)
list.Insert(val ue);
}

private void AssertCorrectRe sult(int[] input)
{
AssertCountEqua ls(input.Length );

Array.Sort(inpu t);

for (int i = 0; i < input.Length; i++)
Assert.AreEqual (input[i], list[i], "bad value at index " + i);
}

private void AssertCountEqua ls(int expected)
{
Assert.AreEqual (expected, list.Count, "bad Count");
}
}
}
--
Freedom means that when you wake up in the morning, your life, liberty and
property are yours to do with them what you will. Of course, that means that
no one else's life, liberty, or property is yours. That's freedom. It's real
simple. -- James Ostrowski
Nov 17 '05 #6
Thank you! This is exactly the kind of response I was looking for. :)

"Greg Bacon" <gb****@hiwaay. net> wrote in message
news:11******** *****@corp.supe rnews.com...
In article <kc************ *****@newsread3 .news.pas.earth link.net>,
Ryan Graham <ry****@earthli nk.net> wrote:

: I totally bombed this question in an interview so I'm posting my
: answer here for comments and suggestions... perhaps (god help me) I'm
: just not that bright, but this works and seems to be fairly efficent.
: The idea was simple, insert an integer into a list that has already
: been sorted.

Did the question require logarithmic complexity? In pressure
situations, avoid cleverness! Assuming there was no complexity
requirement, you might have said something like, "Well, I'll start
with a linear search and then optimize later using binary search."

You may have even said, "Well, I'll start with the dead-simple approach
of copying to a one-longer array, adding the value to be inserted, and
the sorting the result." Then you could talk about the piggish
complexity, which you could improve by going to linear or binary
search, and also the inefficient allocation strategy, which you could
mitigate by doubling the capacity -- distinct from the length -- when
you run out of room.

Showing that you are aware of clever solutions but move first to a
correct result and then refine for performance sends a very good signal
in a job interview.

Below is an implementation, complete with unit tests.

Enjoy,
Greg

// SortedList.cs
using System;
using System.Collecti ons;

namespace MyCollections
{
public class SortedIntList
{
private int[] a = new int[0];

public void Insert(int value)
{
int i = InsertionPointL ogarithmic(valu e);

int[] anext = new int[a.Length + 1];

Array.Copy(a, 0, anext, 0, i);
anext[i] = value;
Array.Copy(a, i, anext, i + 1, a.Length - i);

a = anext;
}

private int InsertionPointL ogarithmic(int value)
{
int l = 0;
int r = a.Length - 1;

while (l <= r)
{
int m = (l + r) / 2;

if (value < a[m])
r = m - 1;
else
l = m + 1;
}

return l;
}

private int InsertionPointL inear(int value)
{
int i;
for (i = 0; i < a.Length; i++)
if (a[i] > value)
break;

return i;
}

public int this[int i]
{
get { return a[i]; }
}

public int Count
{
get { return a.Length; }
}
}
}

// InsertTest.cs
using System;

using MyCollections;

using NUnit.Framework ;

namespace SortedListTests
{
[TestFixture]
public class InsertTest
{
SortedIntList list = new SortedIntList() ;

[SetUp]
public void CreateList()
{
list = new SortedIntList() ;
}

[Test]
public void StartEmpty()
{
AssertCountEqua ls(0);
}

[Test]
public void IntoEmptyList()
{
list.Insert(3);

AssertCountEqua ls(1);
Assert.AreEqual (3, list[0], "bogus value");
}

[Test]
public void InsertIncreasin g()
{
int[] seq = new int[] { 1, 2 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}

[Test]
public void InsertDecreasin g()
{
int[] seq = new int[] { 20, 10 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}

[Test]
public void InsertManyAssor ted()
{
int[] seq = new int[] { 70, 10, 30, 40, 20, 50 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}

[Test]
public void InsertWithDupli cates()
{
int[] seq = new int[] { 30, 20, 10, 10, 50, 10, 50, 20 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}

private void InsertSequence( int[] values)
{
foreach (int value in values)
list.Insert(val ue);
}

private void AssertCorrectRe sult(int[] input)
{
AssertCountEqua ls(input.Length );

Array.Sort(inpu t);

for (int i = 0; i < input.Length; i++)
Assert.AreEqual (input[i], list[i], "bad value at index " + i);
}

private void AssertCountEqua ls(int expected)
{
Assert.AreEqual (expected, list.Count, "bad Count");
}
}
}
--
Freedom means that when you wake up in the morning, your life, liberty and
property are yours to do with them what you will. Of course, that means
that
no one else's life, liberty, or property is yours. That's freedom. It's
real
simple. -- James Ostrowski

Nov 17 '05 #7
After reviewing suggestions from this list and others I came up with the
following last night... further comments and suggestions greatly
appreciated.

I've added the test method down at the bottom for reference.

new method (in milliseconds)
0 10,000 calls to List.Insert()
0 15,000 calls to List.Insert()
0 20,000 calls to List.Insert()
15.625 50,000 calls to List.Insert()
15.625 75,000 calls to List.Insert()
15.625 100,000 calls to List.Insert()

old method (in milliseconds)
203.125 10,000 calls to List.Insert()
265.625 15,000 calls to List.Insert()
1062.5 25,000 calls to List.Insert()
6687.5 50,000 calls to List.Insert()
18296.875 75,000 calls to List.Insert()
35468.75 100,000 calls to List.Insert()
class List
{
private const int INITIAL_BUFFER_ SIZE = 10;
private int[] _list;

private int _length = 0;

public List()
{
this._list = new int[INITIAL_BUFFER_ SIZE];
}
public void Insert(int value)
{
this.Insert(val ue, BinarySearch(va lue));

if ( this._length == this._list.Leng th )
this.IncrementA rraySize();
}

private void Insert(int value, int index)
{
for(int i = this._length; i > index; --i)
this._list[i] = this._list[i-1];

this._list[index] = value;

this._length++;
}

private int BinarySearch(in t value)
{
int left = 0;
int right = this._length -1;
int middle = 0;

while (left <= right)
{
middle = (left + right) / 2;

if (value < this._list[middle])
{ right = middle -1; }

else if (value > this._list[middle])
{ left = middle +1; }

else if (value == this._list[middle])
{ break; }

}
return left;
}

private void IncrementArrayS ize()
{
int[] tempArray = new int[this._list.Leng th *2];

Array.Copy(this ._list, tempArray, this._list.Leng th);

this._list = tempArray;
}
}

// Test Method
static void Main(string[] args)
{
int testIterations = 100000;

List list = new List();
DateTime startTime = DateTime.Now;

for (int i=0; i<testIteration s; i++)
list.Insert(i);

DateTime endTime = DateTime.Now;
TimeSpan timeSpan = endTime - startTime;
Debug.WriteLine (timeSpan.Total Milliseconds);
}
"Peter Rilling" <pe***@nospam.r illing.net> wrote in message
news:%2******** ********@TK2MSF TNGP10.phx.gbl. ..
I have not read the code too closely, but here is what I see that could
improve performance slightly (depending on how the Array.Copy is
implemented) .

Toward the end, you have two copy statements which copy each half of the
array leaving a gap for the new number.

One suggestion (and forgive me if I am too obsessive compulsive) is that
rather then two, it might be more efficient to make just one call to
Array.Copy to an array that is one bigger. Doing this will leave the last
element undefined. Then insert your value as the last element, then swap
the last element with the pivot value. If Array.Copy was efficient, it
would do a memory copy rather then enumerating the values (like I said, I
don't really know the implementation) .

Don't know if it would do anything but just a thought.
"Ryan Graham" <ry****@earthli nk.net> wrote in message
news:kc******** *********@newsr ead3.news.pas.e arthlink.net...
I totally bombed this question in an interview so I'm posting my answer
here
for comments and suggestions... perhaps (god help me) I'm just not that
bright, but this works and seems to be fairly efficent. The idea was
simple,
insert an integer into a list that has already been sorted.

private int[] _list;
...
public void Insert(int value)
{
int[] tempArray;

// check for special cases
if (this._list == null)
{ // first item added create new array

this._list = new int[1];
this._list[0] = value;
return;
}
else if (this._list[this._list.Leng th-1] <= value)
{ // item to be added is greater than the last
// item in the array, append item to end

tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, tempArray, this._list.Leng th);
this._list = tempArray;
this._list[this._list.Leng th-1] = value;

return;
}
else if (this._list[0] >= value)
{ // item to be added is less than the first
// item in the array, insert item to the beginning

tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, 0, tempArray, 1, this._list.Leng th);
this._list = tempArray;
this._list[0] = value;

return;
}

int left = 0;
int right = this._list.Leng th;
int middle = 0;
int mod = 0;

// binary search loop
while (left <= right)
{
// modify the pivot point
middle = (left + right) / 2;

if (value > this._list[middle])
{ // item is greater than the pivot point

//Debug.WriteLine (value + " > " + this._list[middle]);
mod = 1;
left = middle + 1;
}
else if (value < this._list[middle])
{ // item is less than the pivot point

//Debug.WriteLine (value + " < " + this._list[middle]);

mod = 0;
right = middle - 1;
}
else
{ // item is equal to the pivot point

//Debug.WriteLine (value + " = " + this._list[middle]);
break;
}
}

// modify the pivot point again
middle += mod;

// rebuild array to allow space for new item
tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, 0, tempArray, 0, middle);
Array.Copy(this ._list, middle, tempArray, middle+1, tempArray.Lengt h -
(middle +1));

// insert new item
this._list = tempArray;
this._list[middle] = value;
}


Nov 17 '05 #8
In article <ta************ **@newsread3.ne ws.pas.earthlin k.net>,
Ryan Graham <ry****@earthli nk.net> wrote:

: Thank you! This is exactly the kind of response I was looking for. :)

You're welcome. I'm glad to help.

Greg
--
Certainly, an infant under a year is too young to be stimulated by
seeing his mother undressed (unless he's a breastfeeder) . . .
-- "What To Expect The First Year" on parental nudity
Nov 17 '05 #9
In article <af************ *@newsread3.new s.pas.earthlink .net>,
Ryan Graham <ry****@earthli nk.net> wrote:

: After reviewing suggestions from this list and others I came up with
: the following last night... further comments and suggestions greatly
: appreciated.
:
: I've added the test method down at the bottom for reference.

If you anticipate the lists getting large, the allocation strategy
is inefficient. When you run out of room, you should double the
length of the array instead of going back for just one more. That
does mean, however, that you'll have to track length and capacity
separately.

Greg
--
The maxim of buying nothing without the money in our pockets to pay for
it would make of our country one of the happiest on earth.
-- Thomas Jefferson
Nov 17 '05 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
2984
by: Jonathan Moss | last post by:
I have (almost) succesfully created a linked list data structure class. It will quite happily add items to to the end of the list (once I found that objects are not passed by reference :). What I am having problems with is inserting an item into the middle of the list. The code below is the addAfter function. As It's name suggests it is supposed to add a new list item after the one specified by $prev with what ever was after $prev now...
11
1381
by: Thomas Guettler | last post by:
Hi, Simple excerise: You have a sorted list of integers: l= and you should fill all gaps: result ==
9
25894
by: custard_pie | last post by:
I need help sorting a list...I just can't figure out how to sort a list and then return a list with the index of the sorted items in the list for example if the list I want to sort is I need to be returned Can someone help please....
7
2612
by: Kieran Simkin | last post by:
Hi all, I'm having some trouble with a linked list function and was wondering if anyone could shed any light on it. Basically I have a singly-linked list which stores pid numbers of a process's children - when a child is fork()ed its pid is added to the linked list. I then have a SIGCHLD handler which is supposed to remove the pid from the list when a child exits. The problem I'm having is that very very occasionally and seemingly...
0
1089
by: Steve Teeples | last post by:
I have a sorted listbox. When just one item is in the collection the item will not appear in my displayed list. If I remove the sort option then the item is displayed correctly. If I have multiple items in the collection then sorted works as expected. I have the latest service pack installed for .NET Frameworks 1.1. I am using Windows XP SP2. Do you have any idea why this would happen? -- Steve
26
2823
by: Simon Jefferies | last post by:
Hello, I am trying to add an item to a checked list box, like: clbList.Items.add("Hello",true) I get an error back: Run-time exception thrown: System.ArgumentOutOfRangeException - Specified argument was out of the range of valid values. Parameter name: '-1' is not a
7
2320
by: Miguel E. | last post by:
Hi, I've been (self) studying Python for the past two months and I have had no background in OOP whatsoever. I was able to write an interactive program that randomly selects an item from a list. From a Main Menu, the user has the option to add items to an empty list, show the list, run the random selector, and of course quit the program. The program also complains if a user tries to add an item that is already in the list prompting...
12
1927
by: David Isaac | last post by:
Is it expected for access to set elements to be much slower than access to list elements? Explanation? Thanks, Alan Isaac 9.806250235714316 3.9823075279120701
12
3522
by: Marcus Kwok | last post by:
I am not sure if this is something that is covered by the Standard, or if it's an implementation detail of my Standard Library. I am reading in a large amount of data into a std::set. There is an overload for std::set::insert() that takes in an iterator as a hint as to where the new value should be inserted, and my implementation (Dinkumware) says that if the hint is good (meaning the iterator points immediately before or after where...
0
9377
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
1
9925
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9811
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
8814
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7358
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6640
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5266
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
3913
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
3
3509
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.